Spring @Value 用法小結,#與$的區別
文章轉載自:http://www.cnblogs.com/larryzeal/p/5910149.html
起因
一直的用法是 @Value("${jdbc.driverClass}") 這樣,但在Spring官方文件裡又看到 @Value("#{a.b}")的用法。
於是研究了下。
結論
@Value的值有兩類:
① ${ property : default_value }
② #{ obj.property? : default_value }
就是說,第一個注入的是外部引數對應的property,第二個則是SpEL表示式對應的內容。
那個 default_value,就是前面的值為空時的預設值。注意二者的不同。
例子
1、使用STS 新建一個Spring Boot專案,依賴部分留空。
2、在application.properties 檔案中新增如下內容:
1 jdbc.driverClass=com.mysql 2 [email protected] 3 jdbc.user=admin 4 jdbc.pwd=pwd
3、新建類ValueDemo,內容如下:
1 package cn.larry.spring; 2 3 import javax.annotation.PostConstruct; 4 5 import org.springframework.beans.factory.annotation.Value;6 import org.springframework.stereotype.Component; 7 8 @Component 9 public class ValueDemo { 10 @Value("${jdbc.driverClass}") 11 private String driver; 12 13 @PostConstruct 14 public void run(){ 15 System.out.println(driver); 16 } 17 18 }
4、啟動Spring Boot專案,輸出如下:
這就是常用的 ${ properties },很簡單。繼續。
5、再新建一個類AnotherObj,內容如下:
1 package cn.larry.spring; 2 3 import org.springframework.beans.factory.annotation.Value; 4 import org.springframework.stereotype.Component; 5 6 @Component 7 public class AnotherObj { 8 @Value("${jdbc.user}") 9 private String name; 10 @Value("{jdbc.pwd}") 11 private String pwd; 12 13 public String getName() { 14 return name; 15 } 16 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public String getPwd() { 22 return pwd; 23 } 24 25 public void setPwd(String pwd) { 26 this.pwd = pwd; 27 } 28 29 }
6、修改ValueDemo,如下:
1 package cn.larry.spring; 2 3 import javax.annotation.PostConstruct; 4 5 import org.springframework.beans.factory.annotation.Value; 6 import org.springframework.stereotype.Component; 7 8 @Component 9 public class ValueDemo { 10 @Value("${jdbc.driverClass}") 11 private String driver; 12 13 @Value("#{anotherObj.name}") 14 private String name; 15 16 @PostConstruct 17 public void run(){ 18 System.out.println(driver); 19 System.out.println(name); 20 } 21 22 }
7、再次執行Spring Boot專案,結果如下:
這裡展示的是 #{ SpEL }的效果。
8、有意思的是,二者可以結合使用,如:#{ '${}' } ,注意單引號,注意不能反過來,測試如下。
application.properties檔案中新增一行:media=jdbc.url
ValueDemo類修改如下:
1 package cn.larry.spring; 2 3 import javax.annotation.PostConstruct; 4 5 import org.springframework.beans.factory.annotation.Value; 6 import org.springframework.stereotype.Component; 7 8 @Component 9 public class ValueDemo { 10 @Value("${jdbc.driverClass}") 11 private String driver; 12 13 @Value("#{anotherObj.name}") 14 private String name; 15 16 // @Value("${ '#{anotherObj.media}' }") //這個不支援。 17 @Value("#{ '${media}' }") 18 private String media; 19 20 @PostConstruct 21 public void run(){ 22 System.out.println(driver); 23 System.out.println(name); 24 System.out.println(media); 25 } 26 27 }
9、執行Spring Boot專案,結果如下:
另外,預設值很淺顯,也不再測試了相關推薦
Spring @Value 用法小結,#與$的區別
文章轉載自:http://www.cnblogs.com/larryzeal/p/5910149.html 起因 一直的用法是 @Value("${jdbc.driverClass}") 這樣,但在Spring官方文件裡又看到 @Value("#{a.b}")的用法。 於
ffmpeg用法小結,教你抓各大網站視訊
最近受邀朋友幫忙需要抓取一段某酷電影,偶然間發現ffmpeg程式。說到此可能會有人提到you-get和youtube-dl,期間也接觸了該兩款程式,但是由於版權原因,該軟體僅僅可以抓取前幾分鐘預覽版,作為程式猿F12除錯工具我們必不可少的工具,終於發現了新大陸(get.json)期間很多群友以及感興趣的朋友一
spring @Value 用法
首先,@value需要引數,這裡引數可以是兩種形式: 1、@Value("#{configProperties['t1.msgname']}") SpEL表示式:通常用來獲取bean的屬性,或者呼叫b
jstl標籤forEach用法小結,後臺接收表單(字串和陣列)
對於在頁面上顯示大量資料庫查詢出來的內容時,有必要使用jstl的迴圈語句forEach。 先從後臺查詢:List<Map<String,Object>> systemNameList = sendPowerService.getAllSystemNa
Spring和SpringBoot比較,解惑區別
except super pat cWeb () frame XML tid 慢慢 1、概述:對於Spring和SpringBoot到底有什麽區別,我聽到了很多答案,剛開始邁入學習SpringBoot的我當時也是一頭霧水,隨著經驗的積累、我慢慢理解了這兩個框架到底有什麽區別
fgets和fputs,fread和fwrite,fscanf,和fprintf用法小結
fwrite fgets eof IT 意義 遇到 其中 文件 之前 一、fgets(str,n,fp); fgets(str,n,fp);就是從fp指向的文件中讀取n-1個字符送入字符數組str中。 說明:1、在讀出n-1個字符之前,如果遇到了換行符或者EOF,則讀出結束
value與innerHTML,innerText的區別
value與innerHTML,innerText的區別: innerHTML與innerText的區別我就不講了,主要講value與這兩者的區別! 1.value是表單元素的特有屬性,非表單元素沒有value屬性,如div,span等; 2.value在不同表單元素裡有不同的意義,如b
查缺補漏——String,StringBuffer,StringBuilder區別及用法
最近在看併發及虛擬機器部分,介紹了String是不可變的物件,順便複習了與string相關的類。 一 String是不可變物件,它一定是執行緒安全的,因為當我們呼叫substring(),replace(),concat()這些方法時,都不會影響它原來的值,只會返回一個新構造的字串物件,因此當要
Spring整合mybatis時,資料庫配置com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver區別
1、#mysql-connector-java 5 用法 spring.datasource.driver-calss-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnico
QT QTableView用法小結(設定單元格字型顏色,文字字型...)
這幾天在公司做關於衰減開關的上位機,用到很多表格,其中表格基本上都是用QTableView進行編寫。為了防止以後忘記,同時也給後續的同學一點學習建議,特此寫下這篇部落格。 QTableView常用於實現資料的表格顯示。下面我們如何按步驟實現學生資訊表格:一 新增表頭
Spring @Value("$XXX")注入值失敗,錯誤資訊提示:Could not resolve placeholder佔位符不能被解析
問題原因: Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'wx.app.config.appid' in string value "${wx.app.config
Spring @controller,@service,@repository,@component區別
今天在做課設的時候發現SpringBoot一直用不了Service層的類。。記得有個@component服註解,百度這個註解的時候,發現了一個新大陸(關於@controller,@service,@repository,@component區別),這解決了我學SSM的一個困惑,特此分享。
2.spring boot熱啟動,autowired自動載入,value註解,屬性注入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId&
Spring-boot中@ConfigurationProperties,@Value,@PropertySource
1.利用@ConfigurationProperties獲取配置的值,@ConfigurationProperties是springboot提供的基於安全型別的配置放置。 application.properties spring.redis.host=127.0.0.1
C++系列——const,引用,指標用法小結
1. const 將變數設定為只讀,任何對其進行的寫操作(如賦值),都會導致編譯錯誤。 2. 引用 引用(複合型別)就是物件的另外一個名字。 關於定義引用幾點要求: a. 定義引用的時候,必須初始化(指定引用指向物件的唯一方法)。非法情況:int &ref;
spring cloud註冊中心,服務提供作者,服務消費者的一些區別
Spring Cloud Eureka, 使用Netflix Eureka來實現服務註冊與發現。 Eureka服務端,我們也稱為服務註冊中心。 同其他服務註冊中心 一 樣,支援高可用配置。它依託於強 一 致性提供良好的服務例項可用性,可以應對多種不同的故障場景。如果E
ubuntu16.04下徹底解除安裝wineqq,安裝wineqq,dpkg用法小結
之前不知怎麼回事,下載的wineqq不能使用,在今天終於把它刪除,這裡簡單的進行一下記錄~ 1. sudo dpkg -r wine-qqintl 這裡的dpkg -r 含義是移除軟體但是保留配置 2. sudo rm -rf .deep
【Spring】只想用一篇文章記錄@Value的使用,不想再找其它了(附思維導圖)
1 簡介 不得不說,Spring為大家提供許多開箱即用的功能,@Value就是一個極其常用的功能,它能將配置資訊注入到bean中去。即使是一個簡單的功能,Spring也提供了豐富的注入型別和形式。我經常會忘記一些特別型別注入的寫法,比如說陣列,現在整理一下,希望以後不用再找了。 2 三種形式 使用@Val
Spring混合配置時,遇到配置文件路徑NotFound,使用PathMatchingResourcePatternResolver解決
perl mapper mat add 配置 spa ner log addall 在將spring的xml配置改為java配置的過程中,遇到了一些問題,block時間比較長的一個問題是資源(.xml, .properties)的路徑找不到,最後是使用PathMatchin
spring boot無法啟動,或者正常啟動之後無法訪問報404的解決辦法
沒有 自己 路徑 con 啟動不了 瀏覽器 了無 搭建 報錯 以前用spring boot都是用idea的自動創建,或者是用的Jhipster創建的,就沒有深究怎麽去搭建。但是今天晚上心血來潮,想自己搭一個demo來整合一些技術,於是就花一點時間來手動搭。因為今