el最常用的幾種使用場景:
1、從配置文件中讀取屬性
application.properties
name=\u8D75\u8BA1\u521A
1 @Value("${name}")//這裡必須使用$,使用#是不行的
2 private String name;
3 @RequestMapping(value = "/name", method = RequestMethod.GET)
4 public String getName() {
5 return name;
6 }
注意:記住下邊兩句話
2、缺失值情況下,配置默認值
1 @Value("${name2:'剛子'}")//這裡必須使用$,使用#是不行的
2 private String name2;
3 @RequestMapping(value = "/name2", method = RequestMethod.GET)
4 public String getName2() {
5 return name2;
6 }
3、el內部字符串使用String的方法
1 name.list=\u8D75\u8BA1\u521A,\u738B\u5A1C
1 @Value("#{'${name.list}'.split(',')}")
2 private List<String> nameList;
3 @RequestMapping(value = "/nameList", method = RequestMethod.GET)
4 public List<String> getNameList() {
5 return nameList;
6 }
4、三目運算符
1 name.three=\u6768\u8FC7
1 @RequestMapping(value = "/nameThree", method = RequestMethod.GET)
2 public String getNameThree(@Value("${name.three!='楊過'?'黃蓉':'小龍女'}") String nameThree) {
3 return nameThree;
4 }
注意:@value可以直接作為入參
5、正則表達式
1 @Value("#{'100' matches '\\d+'}")//這裡必須使用#,使用$是不行的
2 private boolean isDigital;
3 @RequestMapping(value = "/nameRegEx", method = RequestMethod.GET)
4 public boolean getNameRegEx() {
5 return isDigital;
6 }
6、注入系統屬性
1 @Value("#{systemProperties['os.name']}")//這裡必須使用#,使用$是不行的
2 private String osName;
3 @RequestMapping(value = "/osName", method = RequestMethod.GET)
4 public String getOsName() {
5 return osName;
6 }
7、調用系統原有函數
1 @Value("#{T(java.lang.Math).random() * 10}")//注意:這裡只生成一次,之後你無論調用多少次getRandomValue(),都返回同一個值
2 private String randomValue;
3 @RequestMapping(value = "/randomValue", method = RequestMethod.GET)
4 public String getRandomValue() {
5 return randomValue;
6 }
8、直接注入文件進行操作
testfile/testEl.txt
1 喬峰--降龍十八掌 2 楊過--黯然銷魂掌
1 @Value("classpath:testfile/testEl.txt")
2 private Resource txtResource;
3 @RequestMapping(value = "/resource", method = RequestMethod.GET)
4 public String getResource() {
5 try {
6 return IOUtils.toString(txtResource.getInputStream(), "UTF-8");
7 } catch (IOException e) {
8 ExceptionUtils.getStackTrace(e);
9 }
10 return StringUtils.EMPTY;
11 }
注意:這個很重要,操作文件使用Apache.commons.io.IOUtils來操作。
9、讀取另一個bean的函數的返回值
1 @Component("eLComponent")
2 public class ELComponent {
3 public String getNameBean(){
4 return "喬峰";
5 }
6 }
1 @Value("#{eLComponent.getNameBean()}")//這裡必須使用#,使用$是不行的
2 private String nameBean;
3 @RequestMapping(value = "/nameBean", method = RequestMethod.GET)
4 public String getNameBean() {
5 return nameBean;
6 }
注意:被調用bean最好指定一下beanName。