經過@Value將外部的值動態注入到Bean中,使用的狀況有:java
注入URL資源spring
詳細代碼見:app
@Value("normal") private String normal; // 注入普通字符串 @Value("#{systemProperties['os.name']}") private String systemPropertiesName; // 注入操做系統屬性 @Value("#{ T(java.lang.Math).random() * 100.0 }") private double randomNumber; //注入表達式結果 @Value("#{beanInject.another}") private String fromAnotherBean; // 注入其餘Bean屬性:注入beanInject對象的屬性another,類具體定義見下面 @Value("classpath:com/hry/spring/configinject/config.txt") private Resource resourceFile; // 注入文件資源 @Value("http://www.baidu.com") private Resource testUrl; // 注入URL資源
注入其餘Bean屬性:注入beanInject對象的屬性anotherdom
@Component public class BeanInject { @Value("其餘Bean的屬性") private String another; public String getAnother() { return another; } public void setAnother(String another) { this.another = another; } }
經過@Value將外部配置文件的值動態注入到Bean中。配置文件主要有兩類:ui
第一個屬性文件config.properties內容以下:
${anotherfile.configinject}做爲第二個屬性文件加載路徑的變量值this
book.name=bookName
anotherfile.configinject=placeholder
第二個屬性文件config_placeholder.properties內容以下:spa
book.name.placeholder=bookNamePlaceholder
下面經過@Value(「${app.name}」)語法將屬性文件的值注入bean屬性值,詳細代碼見:操作系統
@Component // 引入外部配置文件組:${app.configinject}的值來自config.properties。 // 若是相同 @PropertySource({"classpath:com/hry/spring/configinject/config.properties", "classpath:com/hry/spring/configinject/config_${anotherfile.configinject}.properties"}) public class ConfigurationFileInject{ @Value("${app.name}") private String appName; // 這裏的值來自application.properties,spring boot啓動時默認加載此文件 @Value("${book.name}") private String bookName; // 注入第一個配置外部文件屬性 @Value("${book.name.placeholder}") private String bookNamePlaceholder; // 注入第二個配置外部文件屬性 @Autowired private Environment env; // 注入環境變量對象,存儲注入的屬性值 public String toString(){ StringBuilder sb = new StringBuilder(); sb.append("bookName=").append(bookName).append("\r\n") .append("bookNamePlaceholder=").append(bookNamePlaceholder).append("\r\n") .append("appName=").append(appName).append("\r\n") .append("env=").append(env).append("\r\n") // 從eniroment中獲取屬性值 .append("env=").append(env.getProperty("book.name.placeholder")).append("\r\n"); return sb.toString(); } }
來源:https://blog.csdn.net/hry2015/article/details/72353994.net