美文网首页Java 杂谈
Spring Java-based configuration

Spring Java-based configuration

作者: java高级编程中心 | 来源:发表于2019-02-23 22:05 被阅读0次

    Configuration

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

    小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

    package spring.example

    @Configuration

    public class MyAppConfig {

    @bean

    public SomeBean someBean() {

    // 实例化并返回,也可进行初始化

    return new SomeBeanImpl();

    }

    }

    同等作用的XML配置会像下面这样:

    @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进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

    相关文章

      网友评论

        本文标题:Spring Java-based configuration

        本文链接:https://www.haomeiwen.com/subject/phsmyqtx.html