Spring EL表示式的运用@Value说明
SpringEL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言。
在Spring开发中经常涉及调用各种资源的情况,包含普通文件、网址、配置文件、系统环境变量等,我们可以使用Spring的表达式语言实现资源的注入。
Spring主要在注解@value的参数中使用表达式。
本事咧演示一下情况:
注入普通字符串
注入操作系统属性
注入表达式运算结果
注入其他Bean的属性
注入文件内容
注入网址内容
注入属性文件(注意:用的是$符号)
配置文件test.properties:
book.author=wangyunfei
book.name=springboot
测试文件test.text:
你好!Springboot
注入类:
@Configuration//声明当前类是一个配置类,相当于Spring配置的XML文件 //包扫描,并排除了对BeanConfig的扫描 @ComponentScan(basePackages={"com.chenfeng.xiaolyuh"},excludeFilters={@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE,value={BeanConfig.class,AopConfig.class})}) @PropertySource("classpath:test.properties")//指定文件地址 publicclassELConfig{ @Value("注入普通字符串")//注入普通字符串 privateStringnormal; @Value("#{systemProperties['os.name']}")//注入操作系统属性 privateStringosName; @Value("#{T(java.lang.Math).random()*100.0}")//注入表达式结果 privatedoublerandomNumber; @Value("#{demoELService.another}")//注入其他Bean属性 privateStringfromAnother; @Value("classpath:test.txt")//注入文件资源 privateResourcetestFile; @Value("https://www.baidu.com")//注入网址资源 privateResourcetestUrl; @Value("${book.name}")//注入配置文件【注意是$符号】 privateStringbookName; @Autowired//Properties可以从Environment获得 privateEnvironmentenvironment; //@Bean //publicstaticPropertySourcesPlaceholderConfigurerpropertyConfigure(){ //returnnewPropertySourcesPlaceholderConfigurer(); //} @Override publicStringtoString(){ 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(IOExceptione){ e.printStackTrace(); returnnull; } } }
测试类:
publicclassSpringELTest{ AnnotationConfigApplicationContextcontext=newAnnotationConfigApplicationContext(ELConfig.class); @Test publicvoidcontextTest(){ ELConfigelConfig=context.getBean(ELConfig.class); System.out.println(elConfig.toString()); } @After publicvoidcloseContext(){ context.close(); } }
补充知识:yml、properties获取pom自定义变量
pom变量:
dev dev jdbc:mysql://127.0.0.1:3306/melab?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai jdbc:mysql://127.0.0.1:3306/tx-manager?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai root 123456
yml获取pom变量:
添加依赖:
org.yaml snakeyaml 1.25
获取变量:
url:@jdbc-url@ lcn-log-url:@jdbc-url@ username:@jdbc-user@ password:@jdbc-password@ properties获取pom变量:
build设置:
maven-resources-plugin utf-8 true
获取变量:
spring.datasource.url=${jdbc-url} spring.datasource.username=${jdbc-user} spring.datasource.password=${jdbc-password}
以上这篇SpringEL表示式的运用@Value说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。