三种Bean装配方式
优先级:自动装配>JavaConfig>XML
1、自动装配
使用注解标注
配置时
用于扫描组件@ComponentScan(“包名”)或@ComponentScan(basePackages={“包1”, “包2”,…})
组件@Component(“组件ID”)
使用时
加载配置@ContextConfiguration(classes=类名.class)
注入bean @Autowired 使用@Autowired(required=false)可能出现未装配
2、使用JavaConfig
缺点:不能装配第三方库中的组件
使用注解标注
@Bean说明该方法返回一个对象 @Bean(name=“指定名字”)
组合配置类
@Import({类名.class, 类名.class …})
在JavaConfig中引用XML
@ImportResource(“classpath:目录/文件名.xml”)
3、使用XML装配
<bean id=“” class=“”></bean>
两种构造器注入方式
1)<constructor-arg>
<bean id=“” class=“”>
<constructor-arg ref=“引用的ID” />
或<constructor-arg value=“字面量” />
或<constructor-arg>
<list>
或<set>
…
</list>
</constructor-arg>
</bean>
2)c-命名空间
顶部声明 xmlns:c=“http://www.springframework.org/schema/c”
<bean id=“” class=“” c:**-ref=“注入的bean ID” />
或<bean id=“” class=“” c:**=“注入的字面量”
无法实现集合装配
setter方法注入方式
1)<property>
<property name=“” ref=“” />
2)p-命名空间
顶部声明 xmlns:p=“http://www.springframework.org/schema/p”
与c-命名空间类似
<bean id=“” class=“” p:**-ref=“” />
使用util-命名空间简化集合装配
顶部声明 xmls:util=“http://www.springframework.org/schema/util”
<util:list id=“”>
<value>…</value>
…
</util:list>
可用的bean:<util:constant> <util:map> <util:properties> <util:property-path> <util:set>
导入其他XML配置
<import resource=“文件名.xml” />
在XML中引用JavaConfig
<bean class=“类名” />
混合配置于高层次
<bean class=“” />
<import resource=“” />