三、SpringBoot註解把配置文件自動映射到屬性和實體類實戰
簡介:講解使用@value註解配置文件自動映射到屬性和實體類
一、配置文件加載
方式一
一、Controller上面配置
@PropertySource({"classpath:resource.properties"})
二、增長屬性
@Value("${test.name}")
private String name;
方式二:實體類配置文件
步驟:
一、添加 @Component 註解;
二、使用 @PropertySource 註解指定配置文件位置;
三、使用 @ConfigurationProperties 註解,設置相關屬性;
四、必須 經過注入IOC對象Resource 進來 , 才能在類中使用獲取的配置文件值。
@Autowired
private ServerSettings serverSettings;
例子:
@Configuration
@ConfigurationProperties(prefix="test")
@PropertySource(value="classpath:resource.properties")
public class ServerConstant {
常見問題:
一、配置文件注入失敗,Could not resolve placeholder
解決:根據springboot啓動流程,會有自動掃描包沒有掃描到相關注解,
默認Spring框架實現會從聲明@ComponentScan所在的類的package進行掃描,來自動注入,
所以啓動類最好放在根路徑下面,或者指定掃描包範圍
spring-boot掃描啓動類對應的目錄和子目錄
二、注入bean的方式,屬性名稱和配置文件裏面的key一一對應,就用加@Value 這個註解
若是不同,就要加@value("${XXX}")java
以前在文件上傳的地方,寫死了上傳的路徑
註解放在controller上
@PropertySource制定文件的路徑爲resources下的application.properties這個配置文件
經過@Value屬性注入進來
在application.properties這個屬性裏面
輸出注入的路徑
桌面上傳上來的文件
spring
首先須要建一個實體類domain下面ServiceSettings.java
定義兩個屬性,生成getter和setter
加上三個註解
屬性注入,使用Value
在controller中使用
啓動應用
訪問測試
springboot
在上面配置前綴爲test。這樣下面在注入的時候就不用寫成test.name和test.domain這種樣式了。
啓動項目
app
spring boot的啓動類配置的@ComponentScan。默認會掃描當前文件所在的文件夾和及其子文件夾
官方推薦把spring的啓動類放在代碼的根路徑下
框架