Spring中基于Java的配置的核心内容是@Configuration
注解的类和@Bean
注解的方法。
@Bean
注解用于表明一个方法将会实例化、配置和初始化一个由Spring IoC容器管理的新对象。 这就像在XML中元素中元素一样。 你可以在任何Spring @Component
中使用@Bean
注解方法,但大多数情况下,@Bean
是配合@Configuration
使用的。
使用@Configuration
注解类表明这个类的目的就是作为bean定义的地方。 此外,@Configuration
类内部的bean可以调用本类中定义的其它bean作为依赖。最简单的配置如下所示:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
上面的AppConfig
类下面的XML形式是等价的
<beans>
<bean id="myService" class="com.acme.services.MyServiceImpl"/>
</beans>
Full @Configuration vs 'lite' @Beans mode?
当@Bean
方法在没有用 @Configuration
注解的类中声明时,它们被称为以lite
模式处理。例如,在@Component
或甚至在* plain old class *中声明的bean方法将被认为是'lite'。
与完整的 @Configuration
不同,lite@Bean
方法不能轻易地声明bean之间的依赖关系。通常一个@Bean
方法在lite
模式下操作时不应该调用另一个@Bean
方法。
只有在@Configuration
类中使用@Bean
方法是一种推荐的方法,可以确保始终使用full
模式。这将防止相同的@Bean
方法被意外地多次调用,并且有助于减少在lite
模式下操作时难以跟踪的微小错误。
@Bean
和@Configuration
注解将在下面的章节中深入讨论。首先,我们将介绍使用基于Java 代码的配置来创建一个spring容器的各种方法。