1. 程式人生 > >2.2 Spring boot 配置分析

2.2 Spring boot 配置分析

本章主要寫的是 Spring5 通過實現FactoryBean 的方式 來注入Bean 。
初始條件:
1. Java version : 1.8
2. maven vesion: 1.3.9

第一步:建立一個簡單結構(quickstart)的 Maven 工程
建立 Maven 工程

第二步:將 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