spring自动装配
<!--
自动装配bean属性
1.byName 2.byType 3.constructor(这个不了解)
4.最佳自动装配(使用autowire="autodetect"):spring首先会尝试做constructor装配 如果没成功,会在尝试byType装配
5.默认自动装配:
如果xml文件中大多数bean的装配方式都为一个,那么可以在beans里面配置default-autowire="byType"(以byType为例) 这个在相应xml文件中有效
在定义了自动装配后 我们也可以<property name="name" ref=""></property>显示装配bean
spring如何开启注解?
注解: 1.@Autowired(spring自带注解) 2.@Inject(JSR-330) 3.@Resource(@JSR-250)
@Autowired:是利用byType装载bean的(可以在任何方法上加载,也可以是构造方法 还可以在属性上加载)
@Autowired的限制 :xml中的bean不能没有,或者是多个
解决在xml中没有实例化对象:@Autowired(required=false)
private SmallSpare2 ss2;
类 SmallSpare2 在xml中是没有实例化的运行Test方法 所有信息都无法显示 包括之前对的信息 加上(required=false)即使没有在xml中实例化
那么就是把ss2设为null 这样以前写的东西都能打印出来
解决在xml中有多个相同的bean:
@Autowired
@Qualifier("guitar")这样便会尝试使用id为guitar的bean
private SmallSpare2 ss2;
-->
<bean id="ss" class="com.entitys.entity.smallxml.SmallSpare">
<property name="name" value="曹雪坤"></property>
</bean>
<!--
byName: 因为类SmallXML中有个SmallSpare属性名为ss
和<bean id="ss" class="com.entitys.entity.smallxml.SmallSpare">刚好对应
而在bean当中定义autowire="byName" 故配对上
-->
<bean id="smallXML" class="com.entitys.entity.smallxml.SmallXML" autowire="byName" p:age="100"></bean>
<!--
byType:SmallXML类有个属性为SmallSpare类型 如果在bean上加上autowire="byType"
那么spring就会自动根据SmallXML的属性ss(根据ss的类型为其赋值)
但如果配置了多个com.entitys.entity.smallxml.SmallSpare spring会报错(又解决方法 但是个人认为没必要)
-->
<bean id="smallXML01" class="com.entitys.entity.smallxml.SmallXML" autowire="byType" p:age="200"></bean>
浙公网安备 33010602011771号