4、IOC创建对象的方式(基于构造函数的依赖注入)
1、通过无参构造进行创建bean对象(默认)
pojo实体类
public class User { private String name; public User() { System.out.println("User的无参构造执行"); } public String getName() { return "name:"+name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User{" + "name='" + name + '\'' + '}'; } }
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 使用Spring创建对象,在Spring中这些都称为Bean id:标识单个bean定义的字符串 class:完全限定的类名 property:相当于对象中的属性 name:属性id value:属性值 ref:引用spring容器中创建好的对象 --> <bean id="user" class="com.zhixi.pojo.User"> <property name="name" value="张志喜"/> </bean> </beans>
测试类:
import com.zhixi.pojo.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("bens.xml"); User user = (User) context.getBean("user"); System.out.println(user.getName()); } }
测试结果:
User的无参构造执行
name:张志喜
无参构造的创建:(在xml文件中创建bean就表示对象已经被实例化)
下面通过有参构造进行创建的话:只需要修改配置文件中的bean即可!
2、通过有参构造的下标创建(必须为所有参数进行赋值)
<bean id="user" class="com.zhixi.pojo.User"> <!--index:表示有参构造的第一个参数 value:表示给第一个参数传入的值--> <constructor-arg index="0" value="张志喜"/> </bean>
3、通过有参构造的类型创建(必须为所有参数进行赋值)
基本类型直接写:int、double……
引用类型写完整包名
<bean id="user" class="com.zhixi.pojo.User"> <constructor-arg type="java.lang.String" value="zhangzhixi"/> </bean>
4、直接通过参数名进行创建(必须为所有参数进行赋值)
<bean id="user" class="com.zhixi.pojo.User">
<constructor-arg name="name" value="张三"/>
</bean>