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

本章主要写的是 Spring5 通过实现FactoryBean 的方式 来注入Bean 。
初始条件:
1. Java version : 1.8
2. maven vesion: 1.3.9

快速链接: 2.1 Spring5 快速入门

第一步:创建一个简单结构(quickstart)的 Maven 工程
《2.2 Spring boot 配置分析 - 通过工厂方式注入bean》

第二步:将 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
    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/github_35169934/article/details/78173749
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞