javascript
Spring @Value批注
介紹:
Spring @Value批注用于將值注入變量和方法參數。 我們可以讀取spring環境變量或系統變量。 它還支持SpEL。
在本快速教程中,我們將探討如何使用Spring @Value批注。
設定:
讓我們首先在app.properties文件中定義一些屬性:
user.first.name=Sam user.stocks=50 user.address=California user.preferences=A,B,C products.count={P1: '3', P2: '10', P3: '5'}這些是本教程中用于示例的屬性。
另外,讓我們快速定義AppConfiguration類:
@Configuration @PropertySource("classpath:app.properties") public class AppConfiguration {... }Spring
我們可以使用@Value注釋將默認值分配給類屬性:
@Value("10") private int value;@Value("Hello World") private String msg;請注意,它僅接受String參數,但是在值注入期間,傳入的值將轉換為適當的類型。
讀取Spring環境變量:
我們可以使用@Value注釋來讀取Spring環境變量:
@Value("${user.first.name}") private String userFirstName;我們還可以閱讀值列表:
@Value("${user.preferences}") private String[] userPreferences;現在,讓我們嘗試使用@Value注釋讀取值'products.count'的 映射 :
@Value("#{${products.count}}") private Map<String, Integer> productsCount;要從地圖中獲取特定鍵的值 ,我們將使用:
@Value("#{${products.count}.P1}") private Integer p1Count;讀取系統變量:
使用Spring @Value ,我們還可以直接讀取系統變量:
@Value("${java.home}") private String javaHome;或使用SpEL:
@Value("#{systemProperties['java.home']}") private String javaHome;分配默認值:
如果我們希望在缺少屬性的情況下分配默認值怎么辦? 是的,我們可以使用Spring @Value批注的默認構造來做到這一點:
@Value("${user.stocks:30}") private int stockCount;在此,僅當屬性文件中缺少屬性“ user.stocks”時 ,才會將默認值30分配給stockCount 。
使用SpEL時,我們還可以分配一個默認值:
@Value("#{systemProperties['abc'] ?: 'default value'}") private String unknownSystemProperty;在方法中注入值:
除了基于字段的注入外,我們還可以在方法上使用@Value注釋:
@Value("${user.first.name}") public void setUserName(String userName) {this.userName = userName; }如果我們在方法上使用@Value批注,則其所有參數都將映射到相同的值。
如果要向不同的參數注入不同的參數,則可以將@Value注釋與方法參數一起使用:
public void setUserDetails(@Value("${user.first.name}")String userName,@Value("${user.address}") String address) {this.userName = userName;this.address = address; }結論:
在本教程中,我們探討了使用@Value注釋注入屬性值的不同方法。 我們可以將@Value注釋與字段或方法一起使用。
翻譯自: https://www.javacodegeeks.com/2019/05/spring-value-annotation.html
總結
以上是生活随笔為你收集整理的Spring @Value批注的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摇滚bono_Java比以往任何时候都摇
- 下一篇: 如何彻底删除烦人的电脑弹窗广告如何清理电