日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot系列四 Spring @Value 属性注入使用总结一

發布時間:2025/3/21 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot系列四 Spring @Value 属性注入使用总结一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Value注入
不通過配置文件的注入屬性的情況
通過@Value將外部的值動態注入到Bean中,使用的情況有:

注入普通字符串
注入操作系統屬性
注入表達式結果
注入其他Bean屬性:注入beanInject對象的屬性another
注入文件資源
注入URL資源

詳細代碼見:

@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資源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
注入其他Bean屬性:注入beanInject對象的屬性another

@Component
public class BeanInject {
@Value(“其他Bean的屬性”)
private String another;

public String getAnother() {return another; }public void setAnother(String another) {this.another = another; }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
注入文件資源:com/hry/spring/configinject/config.txt

test configuration file
1
測試類:

@SpringBootApplication
public class Application {

public static void main(String[] args) {SpringApplication.run(Application.class, args); }

}

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class ConfiginjectApplicationTest {
@Autowired
private BaseValueInject baseValueInject;

@Test public void baseValueInject(){System.out.println(baseValueInject.toString()); }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
運行測試類

normal=normal
systemPropertiesName=Windows 10
randomNumber=35.10603794922444
fromAnotherBean=其他Bean的屬性
resourceFile=test configuration file
testUrl=…百度一下,你就知道…略
1
2
3
4
5
6
通過配置文件的注入屬性的情況
通過@Value將外部配置文件的值動態注入到Bean中。配置文件主要有兩類:

application.properties。application.properties在spring boot啟動時默認加載此文件
自定義屬性文件。自定義屬性文件通過@PropertySource加載。@PropertySource可以同時加載多個文件,也可以加載單個文件。如果相同第一個屬性文件和第二屬性文件存在相同key,則最后一個屬性文件里的key啟作用。加載文件的路徑也可以配置變量,如下文的${anotherfile.configinject},此值定義在第一個屬性文件config.properties
第一個屬性文件config.properties內容如下:
${anotherfile.configinject}作為第二個屬性文件加載路徑的變量值

book.name=bookName
anotherfile.configinject=placeholder
1
2
第二個屬性文件config_placeholder.properties內容如下:

book.name.placeholder=bookNamePlaceholder
1
下面通過@Value(“${app.name}”)語法將屬性文件的值注入bean屬性值,詳細代碼見:

@Component
// 引入外部配置文件組:KaTeX parse error: Expected group after '_' at position 175: …iginject/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(); }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
測試代碼:
Application.java同上文

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class ConfiginjectApplicationTest {
@Autowired
private ConfigurationFileInject configurationFileInject;

@Test public void configurationFileInject(){System.out.println(configurationFileInject.toString()); }

}
1
2
3
4
5
6
7
8
9
10
11
12
測試運行結果:

bookName=bookName
bookNamePlaceholder=bookNamePlaceholder
appName=appName
env=StandardEnvironment {activeProfiles=[], defaultProfiles=[default], propertySources=[Inlined Test Properties,systemProperties,systemEnvironment,random,applicationConfig: [classpath:/application.properties],class path resource [com/hry/spring/configinject/config_placeholder.properties],class path resource [com/hry/spring/configinject/config.properties]]}
env=bookNamePlaceholder

總結

以上是生活随笔為你收集整理的Spring Boot系列四 Spring @Value 属性注入使用总结一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。