Spring Expression Language (SpEL) 及其資源呼叫
阿新 • • 發佈:2018-12-27
Spring Expression Language (SpEL),支援在xml和註解中使用表示式。
官方文件:https://docs.spring.io/spring-framework/docs/5.0.x/spring-framework-reference/core.html#expressions
Spring開發中經常涉及呼叫各種資源的情況,包含普通檔案、網址、配置檔案、系統環境變數等。我們可以使用Spring的表示式語言實現資源的注入。
Spring主要在註解@Value的引數中使用表示式。
1. 注入普通字元;
2. 注入作業系統屬性;
3. 注入表示式運算結果;
4. 注入其他bean的屬性;
5. 注入檔案內容;
6. 注入網址內容;
7. 注入屬性檔案。
下面給出一個例子:
可通過加入commons-io來簡化檔案的相關操作。
package com.vic.highlight_spring5.ch2.el; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.env.Environment; import org.springframework.core.io.Resource; public class ELConfig { @Value("I love this.") private String normal; @Value("#{systemProperties['os.name']}") private String osName; @Value("#{ T(java.lang.Math).random() * 100.0 }") private double randomNumber; @Value("#{demoService.another}") private String fromAnother; @Value("classpath:com/vic/highlight_spring5/ch2/el/test.txt") private Resource testFile; @Value("http://www.baidu.com") private Resource testUrl; @Value("${project.name}") private String projectName; @Autowired private Environment environment; public static PropertySourcesPlaceholderConfigurer propertyConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } public void outputResource() { try{ System.out.println(normal); System.out.println(osName); System.out.println(randomNumber); System.out.println(fromAnother); System.out.println(IOUtils.toString(testFile.getInputStream())); System.out.println(IOUtils.toString(testUrl.getInputStream())); System.out.println(projectName); System.out.println(environment.getProperty("project.author")); } catch (Exception e) { e.printStackTrace(); } } }