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>

posted on 2016-10-05 11:14  x-cuke  阅读(26)  评论(0)    收藏  举报