SpringBoot 值的注入以及 EL 表示式
spring 注入外部的值
在spring 中 處理外部值的最簡單的方式是通過宣告屬性源並且通過鬆日那個的 environment 來檢索屬性 通常是使用@PropertySource 引用檔名和檔案路徑 。 這樣這個屬性檔案就會被載入到spring的environment中 在需要使用屬性的地方通過呼叫 getProperty 來獲取 environment 中的屬性值
@Autowired private ApplicationContext applicationContext; String property = applicationContext.getEnvironment().getProperty("user.name");
spring boot 將properties 檔案中的屬性注入為一個Bean 物件
@Configuration
@PropertySource(value = "classpath:config/user.properties")
@ConfigurationProperties(prefix = "user")
public class UserPropertiesConfig {
private String name;
private int age;
private String password;
}
通過注入 UserPropertiesConfig 來獲取屬性
Spring EL 表示式
Spring 開發中經常涉及呼叫各種資源的情況,包括普通檔案,網址,配置檔案,環境變數。使用spring 表示式語言實現資源的注入 ,能夠以一種強大和簡單的方式將值裝配到bean 屬性和構造器中,
spring EL 的特性
- 使用bean 的id 來引用bean
- 呼叫方法和訪問物件的屬性
- 對值進行算術,關係 和邏輯運算
- 正則表示式匹配
- 集合操作
spring主要在@value 的引數中使用表示式
@value可注入以下引數:
- 普通字元
@Value(“12”)
private String str;
2.作業系統屬性
@Value("#systemProperties[‘os.name’]")
private String osName;
@Value("#{systemProperties[‘os.name’]}")
private static String osName;
3.表示式運算結果。
4.其他bean的屬性
@Value("#UserServer.name")
5.檔案內容
@Value(“classpath:test.txt”)
private Resource testFile;
6.網址內容
@Value(“http://www.baidu.com”)
private Resource testUrl;
7.屬性檔案
@value("${book.name}")
private String bookName;
github url:springbootcustomproperties