内容简介:这是一个类级注解。如下所示,被它注解的类可能包含多个被同等作用的XML配置会像下面这样:
@Configuration
这是一个类级注解。如下所示,被它注解的类可能包含多个被 @Bean 注解的方法。Spring容器会调用这些方法,获得你初始化后的对象实例,并把他们注册为容器内的beans。
package spring.example
@Configuration
public class MyAppConfig {
@bean
public SomeBean someBean() {
// 实例化并返回,也可进行初始化
return new SomeBeanImpl();
}
}
同等作用的XML配置会像下面这样:
<bean name="someBean" class="spring.example.SomeBeanImpl"/>
@Configuration 类们实际上就是Spring管理的用于创建并注册bean实例的工厂。
Spring容器的启动
在Java-based的配置方式下,spring容器可以被 AnnotationConfigApplicationContext 启动,或者,针对Web应用 AnnotationConfigWebApplicationContext 也行。
new AnnotationConfigApplicationContext(MyAppConfig.class);
我们也可以指定包含了 @Configuration 类的有效包名:
new AnnotationConfigApplicationContext("spring.example");
基于上述两个重载方法,我们可以在单个package下放进多个JavaConfig类。
使用多个JavaConfig类
new AnnotationConfigApplicationContext( AppConfig.class, DataSourceConfig.class );
new AnnotationConfigApplicationContext("example.spring.app","example.spring.datasource");
配置类中的依赖注入
既然配置类会被Spring容器注册成beans,那意味着,我们可以像使用普通bean那样使用这个配置bean。在以下例子我们要把这个一个配置bean注入给另一个配置bean:
@Configuration
public class AppConfig {
// 方式一:注入DataSourceConfig
@Autowired
private DataSourceConfig dataSourceConfig;
@Bean
Client clientBean() {
return new Client(dataSourceConfig.dataSourceBean());
}
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class, DataSourceConfig.class);
context.getBean(Client.class).showData();
}
// 方式二:为何要那么麻烦呢?直接注入DataSourceBean不就好了?
@Autowired
private DataSourceBean dataSourceBean;
@Bean
Client clientBean() {
return new Client(dataSourceBean);
}
}
@Configuration
class DataSourceConfig {
@Bean
DataSourceBean dataSourceBean() {
return new DataSourceBean();
}
}
class Client {
private DataSourceBean dataSourceBean;
Client(DataSourceBean dataSourceBean){
this.dataSourceBean = dataSourceBean;
}
public void showData() {
System.out.println(dataSourceBean.getData());
}
}
class DataSourceBean {
public String getData() {
return "some data";
}
}
以上所述就是小编给大家介绍的《Spring - Java-based configuration: Using @Configuration》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JAVA 2核心技术 卷Ⅰ
[美] 霍斯特曼、[美] 科奈尔 / 叶乃文、邝劲筠 等 / 机械工业出版社 / 2006-5 / 88.00元
本书是Java技术经典参考书,多年畅销不衰,第7版在保留以前版本风格的基础上,涵盖Java2开发平台标准版J2SE5.0的基础知识,主要内容包括面各对象程序设计、反射与代理、接口与内部类、事件监听器模型、使用Swing UI工具箱进行图形用户界面设计,异常处理、流输入/输出和对象序列化、泛型程序设计等。 本书内容翔实、深入浅出,附有大量程序实例,极具实用价值,是Java初学者和Java程序员......一起来看看 《JAVA 2核心技术 卷Ⅰ》 这本书的介绍吧!