Wiring beans
三种配置方式
XML 配置
Java 配置
- Implicit bean discovery and automatic wiring (推荐配置)
- Component scanning (组件扫描)
@Component
- 默认关闭
- 使用
@ComponentScan 来开启
- 使用
XML: <context: component-scan> 来开启
- 命名
- 默认:类名首字母小写
- 使用
@Component("lonelyHeartsClub")
- 使用
javax.inject.Named 和 @Named("lonelyHeartsClub")
- 指定基本包
- 使用
@ComponentScan("soundsystem")
- 使用
@ComponentScan(basePackages="soundsystem")
- 使用
@ComponentScan(basePackages={"soundsystem", "video"}) 指定多个
- 使用
@ComponentScan(basePackageClasses={CDPlayer.class, DVDPlayer.class}) 指定
- Autowiring (自动安装)
@Autowired
@Autowired(required=false): 找不到的时候,不抛出异常
- 使用
javax.inject.Inject
- 第三方库:没有源代码
- 使用
JavaConfig
@Configuration
@Bean: 这个 方法 返回一个 Bean 对象
@Bean(name="lonelyHeartsClubBand") 指定 ID
- 使用
XML
XML: <beans>
- 使用
https//spring.io/tools/sts 生成 配置 文件
- 使用 Spring Tool Suite 来确保 XML 配置文件正确性
- 声明
<bean class="soundsystem.SgtPeppers" />
- 声明
<bean id="compactDisc" class="soundsystem.SgtPeppers" />
- 构造器 注入
- 引用:
<bean><constructor-arg ref="compactDisc"></bean>
- 值:
<bean><constructor-arg value="The Beatles" /></bean>
- java.util.List:
<bean><constructor-arg><null/></constructor-arg></bean>
- 或者:
<constructor-arg><list><value>Sgt</value><value></value></list></constructor-arg>
- 同理:
<constructor-arg><list><ref bean="sgtPeppers"></ref><ref bean="whiteAlbum"></ref></constructor-arg>
- java.util.Set:
<set></set>
- 方法 注入
<bean><property name="xxx" ref="compactDisc" /></bean>
<bean><property name="xxx" value="The Beatles" /></bean>
- 在
JavaConfig 中引用 XMLConfig: @Import
@Import(CDConfig.class)
@Import({CDPlayerConfig.class, CDConfig.class})
@ImportResource("classpath:cd-config.xml")
- 在
XMLConfig 中引用 JavaConfig
<import resource="cd-config.xml" />