5springboot的@ImportResource註解/配置類/佔位符表示式
@ImportResource註解
springboot是自動裝配/自動配置的,spring等配置檔案 預設會被spring boot自動裝配好。如果自己編寫spring等配置檔案,springboot預設是不識別自己編寫的配置檔案。
如果想要被識別到,則需要在springboot主配置類上 通過@ImportResource
註解 指定配置檔案的路徑進行識別。
但是不推薦手寫spring配置檔案,對於配置檔案,一般有兩種配置方式,如下:
配置方式:
- xml配置檔案。
- 註解配置。
註解配置主要應用在配置類,配置類 等價於 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
註解就可以實現註解方式配置,過程如下:
- 首先建立配置類,註解方式的兩個註解都已經加上了,注意: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; } }
-
再次測試,看是否可以拿到配置類的bean
可以發現註解方式配置類可以拿到bean,補充:dao程式碼是空的,service裡面就只有一個setDao方法和@autoWire匯入的Dao物件,只是用來演示,所以就不詳細補充其他內容了。
總結
配置方式總共兩種,一種spring配置檔案,另一種是註解配置類。兩者之間沒有太大區別,只是形式不同,一個是xml檔案,一個是class檔案。配置類的方法名對應spring配置檔案的bean裡面的id,返回值對應bean裡面的class屬性,set方法對應bean裡面的property屬性注入,而且spring的property屬性注入,本來Service裡面還要提供一個set方法,才能完成注入。
spring boot全域性配置檔案中的 佔位符表示式
-
隨機數 ${random.uuid}等
${random.uuid} : uuid
${random.value} : 隨機字串
${random.int} : 隨機整型數
${random.long} : 隨機長整型數
${random.int(10)} : 10以內的整型數
${random.int[1024,65536]} : 指定隨機數範圍
-
引用變數值
-
properties被yml引用
-
yml引用properties屬性時,如果引用不了,可以設定預設值
-