1. 程式人生 > >SpringBoot 值的注入以及 EL 表示式

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 的特性

  1. 使用bean 的id 來引用bean
  2. 呼叫方法和訪問物件的屬性
  3. 對值進行算術,關係 和邏輯運算
  4. 正則表示式匹配
  5. 集合操作

spring主要在@value 的引數中使用表示式
@value可注入以下引數:

  1. 普通字元
    @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