spring boot 中用@value給static變量賦值


需求:改寫一個JedisUtils,工具類,所以最好用靜態方法和變量。

@value("${redis.host}")

private static String redisHost;

 

運行后發現注入失敗。解決辦法:看了網上大家的說法,有用中間變量的,有用set方法賦值的。試了一下都是可以成功賦值的,

以下引用別人的代碼:

給參數注入,執行set方法(這里注意set方法中的static要去掉)

public static String zhifuUrl;   
@Value("${zhifu.url}")  
public void setZhifuUrl(String url) {  
CrmUtil.zhifuUrl = url;  
}  

通過中間變量賦值:

public static String zhifuUrl;   
@Value("${zhifu.url}")  
private String zhifuUrlTmp;  
  
@PostConstruct  
public void init() {  
zhifuUrl = zhifuUrlTmp;  
}  

  

最后需要注意的是這個在類上要加@Component,才可以成功注入。

 

*********************************************************************************************************************************************************

 

@Value("${}") 可以獲取對應屬性文件中定義的屬性值。

假如我有一個sys.properties文件 里面規定了一組值: web.view.prefix =/WEB-INF/views/

在springMvc.xml文件中引入下面的代碼

<context:property-placeholder
 
ignore-unresolvable="true" location="classpath:sys.properties" />

  

這樣就可以通過@Value("${web.view.prefix}")獲取這個字符串,但是只能在springMvc.xml文件中掃描或者注冊的bean中才能通過@Value("${web.view.prefix}")獲取這個字符串,其他未在springMvc.xml掃描和定義的bean必須在相應的xml文件中引入上面代碼才能使用@Value("${}”)表達式

再controller或者其他組件中通過下面代碼即可獲取“”/WEB-INF/views/“”這個字符串

	@Value("${web.view.prefix}")
	private String prefix; 

  

*********************************************************************************************************************************************************

 

當需要在某個類中定義一個屬性,並且該屬性是一個已存在的bean,要為該屬性賦值或注入時在該屬性上一行使用@Resource(name="xxx"),相當於為該屬性注入一個名稱為xxx的bean。

@Resource(這個注解屬於J2EE的),默認安照名稱進行裝配,名稱可以通過name屬性進行指定, 
如果沒有指定name屬性,當注解寫在字段上時,默認取字段名進行按照名稱查找,如果注解寫在setter方法上默認取屬性名進行裝配。 當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。

@Resource(name="baseDao")     
private BaseDao baseDao; 

 

如BaseDao類使用@Value("${}”)獲取了配置屬性,則可以在其他類中使用@Resource注解標注這個類,然后get方法獲取即可,不需要再次使用注解讀取配置文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM