4、IOC创建对象的方式
-
Spring在创建对象时,默认使用无参构造创建对象
默认是使用无参构造, 不要和property混淆,这个相当于使用set方法去赋值,并不是使用构造方法,(构造方法赋值后面再说)这里也可以不用property属性,那么就不调用set方法,成员变量的值就为堆中的默认值
-
假设我们要使用带参构造器创建对象 -->三种方式
-
使用下标赋值(不建议)
<bean id="user" class="cn.edu.cxtc.domain.User"> <constructor-arg index="0" value="张皓程"></constructor-arg> </bean>
-
类型赋值(不建议)
<!--第二种方式:通过有参构造中变量的类型赋值,不建议使用--> <bean id="user" class="cn.edu.cxtc.domain.User"> <constructor-arg type="java.lang.String" value="zhanghaocheng"></constructor-arg> </bean>
-
通过参数名构造:推荐
<!--第三种:直接通过参数名来设置构造--> <bean id="user" class="cn.edu.cxtc.domain.User"> <constructor-arg name="name" value="sushana"></constructor-arg> </bean>
-
总结:在beans.xml配置文件加载的时候,Spring容器中管理的对象(bean)就已经初始化了,xml中所有管理的对象都已经被创建出来了(实例化),而且在堆中都是同一个对象(singleton),我们需要谁,就getBean(“id”)就得到了谁。
IOC创建对象的方式:无参和 有参构造, 有参构造又有三种赋值的方式,推荐使用第三种赋值
建议:在创建JavaBean时,建议有参构造和无参构造都写上, 这样子不管使用哪种方法创建对象,在bean.xml配置文件中都不会报错了