setter注入(推荐)
<bean id="className" class="classPath">
<property name="student" ref="student"/>
<property name="age" value="1"/>
</bean>
构造器注入
1
<bean id="className" class="classPath">
<constructor-arg name="student" ref="student"/>
<constructor-arg type="age" value="1"/>
</bean>
2
<bean id="className" class="classPath">
<constructor-arg name="student" ref="student"/>
<constructor-arg index="age" value="1"/>
</bean>
两个构造器注入的区别,当有两个或多个类型相同的属性的时候,使用第一种方法就会出现问题
内部bean
<bean id="className" class="classPath">
<bean class="classPath"/>
</bean>
说明:1.内部bean定义不需要ID或name属性,即使定义了也会忽略(内部bean总是匿名的)
2.内部bean总是prototype模式(原型模式)
注意: 1.在使用构造器注入的时候可能会产生循环依赖,抛出BeanCurrentlyexception异常
2.使用ApplicationContext创建实体bean时,默认使用singleton模式,该模式下实体bean与容器同时创建,当然用户也可以需要的时候实例化即延迟实例化
在bean里加lazy—init=“true”