3.4.1 创建基于java的配置
配置极少量的XML来启动java配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
default-init-method="turnOnLights"
default-destroy-method="turnOfLights"
>
<context:component-scanbase-package=”…”/>
</beans>
<context:component-scan>自动注册那些使用某种构造器(stereotype)注解所标注的Bean的,也会自动加载使用@Configuration注解所标注的类。在该示例中,base-package属性告知Spring在...包内查找使用@Configuration注解所标注的所有类。
3.4.2 定义一个配置类
在基于java的配置里使用@Configuration注解的java类,就等价于XML配置中的<beans>元素。
importorg.springframework.context.annotation.Configuration;
@Configuration
public class SpringIdolConfig{
//Bean declaration methods go here
}
@Configuration注解会作为一个标志告知Spring:这个类将包含一个或多个Spring Bean的定义。这些Bean的定义是使用@Bean注解所标注的方法。
3.4.3 声明一个简单的Bean
@Bean
public Performer duke(){
return new Juggler();
}
这个简单方法就是java配置,它等价于之前使用XML所配置的<bean>元素。@Bean告知Spring这个方法将返回一个对象,该对象应该配注册为Spring应用上下文中的一个Bean。方法名将作为该Bean的ID。在该方法中所实现的所有逻辑本质上都是为了创建Bean。
3.4.4 使用Spring的基于Java的配置进行注入
使用基于java的配置,只需要把数字直接传入构造器中:
@Bean
public Performer duke15(){
return new Juggler(15);
}
定义Bean就像我们使用Java编写类的实例代码一样。Setter注入也是自然的Java代码:
@Bean
public Performer Kenny(){
Instrumentalist kenny = newInstrumentalist();
kenny.setSong(“Jingle Bells”);
return Kenny;
}
Bean装配另一个Bean的引用:
@Bean
private Poem sonnet29(){
return new Sonnet29();
}
创建一个PoeticJugglerBean,通过构造器为它装配sonnet29Bean:
@Bean
public Performer poeticDuke(){
return new PoeticJuggler(sonnet29());
}