1.6
配置文件屬性值的注入**
使用Spring Boot全局配置文件設置屬性時:
若是配置屬性是Spring Boot已有屬性,例如服務端口server.port,那麼Spring Boot內部會自動掃描並讀取這些配置文件中的屬性值並覆蓋默認屬性。
若是配置的屬性是用戶自定義屬性,例如剛剛自定義的Person實體類屬性,還必須在程序中注入這些配置屬性方可生效。
Spring Boot支持多種注入配置文件屬性的方式,下面來介紹如何使用註解@ConfigurationProperties和@Value注入屬性
1.6.1
使用@ConfigurationProperties注入屬性
Spring Boot提供的@ConfigurationProperties註解用來快速、方便地將配置文件中的自定義屬性值批量注入到某個Bean對象的多個對應屬性中。假設如今有一個配置文件,若是使用@ConfigurationProperties注入配置文件的屬性,示例代碼以下:框架
@Component學習
@ConfigurationProperties(prefix =
"person")測試
public class Person {this
private int id; code
// 屬性的setXX()方法server
public void setId(int id) {對象
this.id = id;繼承
}
}
1234567891011121314151617181920212223
上述代碼使用@Component和@ConfigurationProperties(prefix
= 「person」)將配置文件中的每一個屬性映射到person類組件中。
須要注意的是,使用@ConfigurationProperties
1.6.2 使用@Value注入屬性
@Value註解是Spring框架提供的,用來讀取配置文件中的屬性值並逐個注入到Bean對象的對應屬性中,Spring Boot框架從Spring框架中對@Value註解進行了默認繼承,因此在Spring Boot框架中還能夠使用該註解讀取和注入配置文件屬性值。使用@Value注入屬性的示例代碼以下io
@Componentclass
public class Person {
@Value("${person.id}")
private int id;
}
1234567891011
上述代碼中,使用@Component和@Value注入Person實體類的id屬性。其中,@Value不只能夠將配置文件的屬性注入Person的id屬性,還能夠直接給id屬性賦值,這點是@ConfigurationProperties不支持的
演示@Value註解讀取並注入配置文件屬性的使用:
(1)在com.lagou.pojo包下新建立一個實體類Student,並使用@Value註解注入屬性
@Component
public class Student {
@Value("${person.id}")
private int id;
@Value("${person.name}")
private String name; //名稱
//省略toString
}
1234567891011121314151617181920212223242526
Student類使用@Value註解將配置文件的屬性值讀取和注入。
從上述示例代碼能夠看出,使用@Value註解方式須要對每個屬性注入設置,同時又免去了屬性的setXX()方法
(2)再次打開測試類進行測試
@Autowired
private Student student;
@Test
public void studentTest() {
System.out.println(student);
}
123456789101112
打印結果:
能夠看出,測試方法studentTest()運行成功,同時正確打印出了Student實體類對象。須要說明的是,本示例中只是使用@Value註解對實例中Student對象的普通類型屬性進行了賦值演示,而@Value註解對於包含Map集合、對象以及YAML文件格式的行內式寫法的配置文件的屬性注入都不支持,若是賦值會出現錯誤
*學習讓人快樂,學習更讓人以爲無知!學了1個多月的《Java工程師高薪訓練營》,才發現本身對每一個技術點的認知都很膚淺,根本深不下去,立個Flag:天天堅持學習一小時,一週回答網上3個技術問題,把本身知道都分享出來,奧利給