Spring 对 Java 配置的支持是由 @Configuration
注解和 @Bean
注解来实现的。
- 有
@Bean
注解的 方法将会实例化、配置和初始化一个 新对象,这个对象将由 Spring 的 IoC 容器来管理。@Bean
声明所起到的作用与<bean/>
元素类似。 - 被
@Configuration
所注解的类则表示这个类的主要目的是作为 bean 定义的资源。被@Configuration 声明的类可以通过在同一个类的内部调用@bean
方法来设置嵌入 bean 的依赖关系。
例如: 最简单的 @Configuration
声明类请参考下面的代码:
@Configuration
public class AppConfig{ @Bean public MyService myService() { return new MyServiceImpl(); }
}
对于上面的@Beans 配置文件相同的 XML 配置文件如下:
<beans> <bean id="myService" class="com.somnus.services.MyServiceImpl"/>
</beans>
上述配置方式的实例化方式如下:利用 AnnotationConfigApplicationContext 类进行实例化
public static void main(String[] args) { ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); MyService myService = ctx.getBean(MyService.class); myService.doStuff();
}
要使用组件组建扫描,仅需用@Configuration 进行注解即可:
@Configuration
@ComponentScan(basePackages = "com.somnus")
public class AppConfig { ...
}
在上面的例子中,com.acme 包首先会被扫到,然后再容器内查找被 @Component 声明的类,找到后将这些类按照 Sring bean 定义进行注册。