您的位置 首页 java

Spring Java-based configuration

Configuration

这是一个类级注解。如下所示,被它注解的类可能包含多个被 @ Bean 注解的方法。Spring容器会调用这些方法,获得你初始化后的对象实例,并把他们注册为容器内的beans。

小编分类整理了许多java进阶学习材料和BAT面试题,需要资料的请转发此文章后再私聊小编回复【java】就能领取2019年java架构师进阶学习资料和BAT面试题。

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";
 }
}
 

小编分类整理了许多java进阶学习材料和BAT面试题,需要资料的请转发此文章后再私聊小编回复【java】就能领取2019年java架构师进阶学习资料和BAT面试题。

文章来源:智云一二三科技

文章标题:Spring Java-based configuration

文章地址:https://www.zhihuclub.com/198566.shtml

关于作者: 智云科技

热门文章

网站地图