Spring EL表示式的运用@Value

来源:互联网 发布:linux 中文输入法安装 编辑:程序博客网 时间:2024/06/16 20:58

Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言。

在Spring开发中经常涉及调用各种资源的情况,包含普通文件、网址、配置文件、系统环境变量等,我们可以使用Spring的表达式语言实现资源的注入。

Spring主要在注解@value的参数中使用表达式。

本事咧演示一下情况:

  • 注入普通字符串
  • 注入操作系统属性
  • 注入表达式运算结果
  • 注入其他Bean的属性
  • 注入文件内容
  • 注入网址内容
  • 注入属性文件(注意:用的是$符号)
配置文件test.properties:
book.author=wangyunfeibook.name=spring boot

测试文件test.text:

你好!Spring boot

注入类:

@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")// 指定文件地址public class ELConfig {@Value("注入普通字符串")// 注入普通字符串private String normal;@Value("#{systemProperties['os.name']}")// 注入操作系统属性private String osName;@Value("#{T(java.lang.Math).random() * 100.0 }")// 注入表达式结果private double randomNumber; @Value("#{demoELService.another}")// 注入其他Bean属性private String fromAnother;@Value("classpath:test.txt")// 注入文件资源private Resource testFile;@Value("https://www.baidu.com")// 注入网址资源private Resource testUrl;@Value("${book.name}")// 注入配置文件【注意是$符号】private String bookName;@Autowired// Properties可以从Environment获得private Environment environment;//@Bean//public static PropertySourcesPlaceholderConfigurer propertyConfigure() {//return new PropertySourcesPlaceholderConfigurer();//}@Overridepublic 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);@Testpublic void contextTest() {ELConfig elConfig = context.getBean(ELConfig.class);System.out.println(elConfig.toString());}@Afterpublic void closeContext() {context.close();}}

git

1 0
原创粉丝点击