2.2 Spring boot 配置分析 - 通过工厂方式注入bean

 2019-11-02 21:19  阅读(1939)
文章分类:Spring boot

本章主要写的是 Spring5 通过实现FactoryBean 的方式 来注入Bean 。
初始条件:

  1. Java version : 1.8
  2. maven vesion: 1.3.9

快速链接: 2.1 Spring5 快速入门

第一步:创建一个简单结构(quickstart)的 Maven 工程
20191102100704\_1.png

第二步:将 Spring5 的依赖加入项目的 POM 文件中:

<dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.0.0.RELEASE</version>
        </dependency>

第三步: 创建一个 bean , 用于注入到 Spring 中。

public class MyBean {
        /* 初始化的目的是为了在获取 bean 时,可以有直观的信息输出 */
        private String id = "ID_000000000001";
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
    }

第四步: 创建类,继承FactoryBean,将泛型T替换掉,并实现其方法。

import com.test.test1.MyBean;
    import org.springframework.beans.factory.FactoryBean;
    import org.springframework.lang.Nullable;

    public class MyBeanFactory implements FactoryBean<MyBean> {
        @Nullable
        public MyBean getObject() throws Exception {
            return new MyBean();
        }

        @Nullable
        public Class<?> getObjectType() {
            return MyBean.class;
        }

        // 创建bean的方式,单例、多例,默认是多例
        public boolean isSingleton() {
            return false;
        }
    }

第五步: 创建一个配置类,用于管理要注入的 bean 或者配置文件信息。需要在类上添加 @Configuration 注解,以便让 Spring 识别为这是一个配置类。

@Configuration
    public class MyConfig {
    }

在此基础上,把上一步创建的自定义工厂 bean 注入到改配置类中,添加 getBean 方法:

import com.test.test2.MyBeanFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

    @Configuration
    public class MyConfig {
        @Bean
        public MyBeanFactory createRunableFactory(){
            return new MyBeanFactory();
        }
    }

上面的注释部分是可以替代 @bean 的,区别是 @Bean(“xXX”) 方式可以自定义 bean 的名字,“xXX”可以在后续获取该 bean 的时候使用。

第六步:创建一个含有 main 方法的主类,在该类中获取 Spring 的上下文,并将上述的配置类添加到获取 Spring 的上下文的构造器中,文章的目的是实现以注解的方式实现 bean 的注入,故选择 AnnotationConfigApplicationContext 。

import com.test.test2.MyBeanFactory;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;

    /** * 测试bean基于注解的注入方式 */
    public class App {
        public static void main( String[] args ) {
            // 以注解的形式把 bean 注入Spring 并获取 Spring 的上下文环境
            AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MyConfig.class);
            // 获取自己配置的 bean 实例
            MyBeanFactory runableFactory = ctx.getBean(MyBeanFactory.class);
            try {
                String id = runableFactory.getObject().getId();
                System.out.println("MyBean ID ----- >> " + id);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

直接运行上面的类,输出的 bean 信息如下:

MyBean ID ----- >> ID_000000000001

来源:http://ddrv.cn

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> 2.2 Spring boot 配置分析 - 通过工厂方式注入bean

相关推荐