Spring - Java-based configuration: Using @Configuration

栏目: Java · 发布时间: 5年前

内容简介:这是一个类级注解。如下所示,被它注解的类可能包含多个被同等作用的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"/>

Spring - Java-based configuration: Using @Configuration

@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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

失业的程序员

失业的程序员

沈逸 / 2014-5-1 / 39.00元

这是一个程序员从失业到自行创业的奋斗历程,虽然囧事连连、过程曲折,却充满了趣味。本书以作者的真实创业经历为主线,文字幽默诙谐,情节生动真实,包括了招聘、团队管理和用户公关,以及技术架构设计、核心代码编写、商务谈判、项目运作等场景经验。 从初期的创业伙伴、领路人,到商业竞争对手,各种复杂的关系在各个关键时刻却都发生了意想不到的逆转。在历经千辛万苦,眼看快要成功时,主人公却几乎再次失业。 ......一起来看看 《失业的程序员》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具