1. 程式人生 > 實用技巧 >5springboot的@ImportResource註解/配置類/佔位符表示式

5springboot的@ImportResource註解/配置類/佔位符表示式

@ImportResource註解

springboot是自動裝配/自動配置的,spring等配置檔案 預設會被spring boot自動裝配好。如果自己編寫spring等配置檔案,springboot預設是不識別自己編寫的配置檔案。

如果想要被識別到,則需要在springboot主配置類上 通過@ImportResource註解 指定配置檔案的路徑進行識別。

但是不推薦手寫spring配置檔案,對於配置檔案,一般有兩種配置方式,如下:

配置方式:

  1. xml配置檔案。
  2. 註解配置。

註解配置主要應用在配置類,配置類 等價於 spring的配置檔案,接下來展示配置類和spring配置檔案之間的過程,看看兩者

之間的異曲同工之妙

spring配置檔案方式

上圖的spring配置檔案很熟悉吧,spring配置檔案配置好後,就可以直接在ioc容器中直接拿這個bean,接下來拿一下該bean,如下圖:

可以發現是拿不到bean,因為spring boot預設不會識別自己編寫的spring配置檔案,需要在spring boot的主配置類上通過@ImportResource註解指定spring配置檔案的路徑,如下圖:

可以發現test()方法可以拿到自己配置的spring配置檔案裡面的bean了,代表spring boot已經識別到了手寫的spring配置檔案,接下來展示 註解類的配置方式。

註解類配置方式

springboot 推薦使用註解方式 進行配置, 註解方式主要是通過註解類來實現,新增 @Configuration @Bean 註解就可以實現註解方式配置,過程如下:

  1. 首先建立配置類,註解方式的兩個註解都已經加上了,注意:StudentService類記得帶上setStudentDao方法,還有@autoWire匯入的StudentDao物件,無論是spring配置檔案還是配置類,如果要注入屬性都要提供set方法。
import com.example.Dao.StudentDao;
import com.example.service.StudentService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author HainChen
 * @Description: 配置類
 * @createDate 2020-08-21 20:41
 * @Modified By:
 */

@Configuration  //新增該註解代表,當前類是配置類
public class AppConfig {

    /**
     * 一個方法代表一個bean,和spring配置檔案那邊配置bean一樣,
     * spring配置檔案的bean的id對應著這邊的方法名,也就是 id = 方法名
     * setStudentDao(stuDao)對應著那邊bean裡面的property屬性注入
     * @return 這裡的返回值就對應那邊的bean裡面的class
     */
    @Bean
     public StudentService stuService(){
        StudentService stuService = new StudentService();

        StudentDao stuDao = new StudentDao();
        stuService.setStudentDao(stuDao);
        return stuService;
    }
}
  1. 再次測試,看是否可以拿到配置類的bean

可以發現註解方式配置類可以拿到bean,補充:dao程式碼是空的,service裡面就只有一個setDao方法和@autoWire匯入的Dao物件,只是用來演示,所以就不詳細補充其他內容了。

總結

配置方式總共兩種,一種spring配置檔案,另一種是註解配置類。兩者之間沒有太大區別,只是形式不同,一個是xml檔案,一個是class檔案。配置類的方法名對應spring配置檔案的bean裡面的id返回值對應bean裡面的class屬性set方法對應bean裡面的property屬性注入,而且spring的property屬性注入,本來Service裡面還要提供一個set方法,才能完成注入。

spring boot全域性配置檔案中的 佔位符表示式

  1. 隨機數 ${random.uuid}等

    ${random.uuid} : uuid

    ${random.value} : 隨機字串

    ${random.int} : 隨機整型數

    ${random.long} : 隨機長整型數

    ${random.int(10)} : 10以內的整型數

    ${random.int[1024,65536]} : 指定隨機數範圍

  2. 引用變數值

    1. properties被yml引用

    2. yml引用properties屬性時,如果引用不了,可以設定預設值