Spring EL表示式的運(yùn)用@Value說明
Spring EL表達(dá)式語言,支持在XML和注解中表達(dá)式,類是于JSP的EL表達(dá)式語言。
在Spring開發(fā)中經(jīng)常涉及調(diào)用各種資源的情況,包含普通文件、網(wǎng)址、配置文件、系統(tǒng)環(huán)境變量等,我們可以使用Spring的表達(dá)式語言實(shí)現(xiàn)資源的注入。
Spring主要在注解@value的參數(shù)中使用表達(dá)式。
本事咧演示一下情況:
注入普通字符串
注入操作系統(tǒng)屬性
注入表達(dá)式運(yùn)算結(jié)果
注入其他Bean的屬性
注入文件內(nèi)容
注入網(wǎng)址內(nèi)容
注入屬性文件(注意:用的是$符號)
配置文件test.properties:
book.author=wangyunfei
book.name=spring boot
測試文件test.text:
你好!Spring boot
注入類:
@Configuration // 聲明當(dāng)前類是一個配置類,相當(dāng)于Spring配置的XML文件
// 包掃描,并排除了對BeanConfig的掃描
@ComponentScan(basePackages={"com.chenfeng.xiaolyuh"}, excludeFilters={@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value={BeanConfig.class, AopConfig.class})})
@PropertySource("classpath:test.properties")// 指定文件地址
public class ELConfig {
@Value("注入普通字符串")// 注入普通字符串
private String normal;
@Value("#{systemProperties['os.name']}")// 注入操作系統(tǒng)屬性
private String osName;
@Value("#{T(java.lang.Math).random() * 100.0 }")// 注入表達(dá)式結(jié)果
private double randomNumber;
@Value("#{demoELService.another}")// 注入其他Bean屬性
private String fromAnother;
@Value("classpath:test.txt")// 注入文件資源
private Resource testFile;
@Value("https://www.baidu.com")// 注入網(wǎng)址資源
private Resource testUrl;
@Value("${book.name}")// 注入配置文件【注意是$符號】
private String bookName;
@Autowired// Properties可以從Environment獲得
private Environment environment;
// @Bean
// public static PropertySourcesPlaceholderConfigurer propertyConfigure() {
// return new PropertySourcesPlaceholderConfigurer();
// }
@Override
public String toString() {
try {
return "ELConfig [normal=" + normal
+ ", osName=" + osName
+ ", randomNumber=" + randomNumber
+ ", fromAnother=" + fromAnother
+ ", testFile=" + IOUtils.toString(testFile.getInputStream())
+ ", testUrl=" + IOUtils.toString(testUrl.getInputStream())
+ ", bookName=" + bookName
+ ", environment=" + environment.getProperty("book.name") + "]";
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
測試類:
public class SpringELTest {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ELConfig.class);
@Test
public void contextTest() {
ELConfig elConfig = context.getBean(ELConfig.class);
System.out.println(elConfig.toString());
}
@After
public void closeContext() {
context.close();
}
}
補(bǔ)充知識:yml、properties獲取pom自定義變量
pom變量:
<profiles> <profile> <!-- 本地環(huán)境 --> <id>dev</id> <properties> <profiles.env>dev</profiles.env> <jdbc-url>jdbc:mysql://127.0.0.1:3306/melab?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai</jdbc-url> <lcn-log-url>jdbc:mysql://127.0.0.1:3306/tx-manager?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai</lcn-log-url> <jdbc-user>root</jdbc-user> <jdbc-password>123456</jdbc-password> </properties> </profile> </profiles>
yml獲取pom變量:
添加依賴:
<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml --> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.25</version> </dependency>
獲取變量:
url: @jdbc-url@ lcn-log-url: @jdbc-url@ username: @jdbc-user@ password: @jdbc-password@ properties獲取pom變量:
build設(shè)置:
<build>
<!--properties解析pom-->
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
獲取變量:
spring.datasource.url=${jdbc-url}
spring.datasource.username=${jdbc-user}
spring.datasource.password=${jdbc-password}
以上這篇Spring EL表示式的運(yùn)用@Value說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MybatisPlus使用@TableLogic實(shí)現(xiàn)邏輯刪除過程
這篇文章主要介紹了MybatisPlus使用@TableLogic實(shí)現(xiàn)邏輯刪除過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
nas實(shí)現(xiàn)java開發(fā)的環(huán)境詳解
這篇文章主要為大家介紹了nas實(shí)現(xiàn)java開發(fā)的環(huán)境詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
spring Data jpa簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了spring Data jpa簡介的相關(guān)資料,需要的朋友可以參考下2017-09-09
SpringBoot?Validation提示信息國際化配置方式
這篇文章主要介紹了SpringBoot?Validation提示信息國際化配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
SpringBoot集成Redisson實(shí)現(xiàn)分布式鎖的方法示例
這篇文章主要介紹了SpringBoot集成Redisson實(shí)現(xiàn)分布式鎖的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
SpringBoot實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式小結(jié)
這里用到的數(shù)據(jù)預(yù)熱,就是在項(xiàng)目啟動時將一些數(shù)據(jù)量較大的數(shù)據(jù)加載到緩存中(筆者這里用的Redis),那么在項(xiàng)目啟動有哪些方式可以實(shí)現(xiàn)數(shù)據(jù)預(yù)熱呢,本文就來給大家講講幾種實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式,需要的朋友可以參考下2023-09-09

