Skip to content

Latest commit

 

History

History
41 lines (24 loc) · 1.82 KB

File metadata and controls

41 lines (24 loc) · 1.82 KB

3.12.1 基本概念:@Bean和@Configuration

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容器的各种方法。