20161016更新:这货其实是SpEL的功能,来这里看看吧:

Spring 4 官方文档学习(五)核心技术之SpEL

 


 

起因

一直的用法是 @Value("${jdbc.driverClass}") 这样,但在Spring官方文档里又看到 @Value("#{a.b}")的用法。

于是研究了下。

结论

@Value的值有两类:

${ property : default_value }

#{ obj.property? : default_value }

就是说,第一个注入的是外部参数对应的property,第二个则是SpEL表达式对应的内容。

那个 default_value,就是前面的值为空时的默认值。注意二者的不同。

例子

1、使用STS 新建一个Spring Boot项目,依赖部分留空。

2、在application.properties 文件中添加如下内容:

1 jdbc.driverClass=com.mysql
2 jdbc.url=3306@local
3 jdbc.user=admin
4 jdbc.pwd=pwd

3、新建类ValueDemo,内容如下:

 1 package cn.larry.spring;
 2 
 3 import javax.annotation.PostConstruct;
 4 
 5 import org.springframework.beans.factory.annotation.Value;
 6 import org.springframework.stereotype.Component;
 7 
 8 @Component
 9 public class ValueDemo {
10     @Value("${jdbc.driverClass}")
11     private String driver;
12     
13     @PostConstruct
14     public void run(){
15         System.out.println(driver);
16     }
17 
18 }

4、启动Spring Boot项目,输出如下:

Spring @Value 用法小结,#与$的区别

这就是常用的 ${ properties },很简单。继续。

5、再新建一个类AnotherObj,内容如下:

 1 package cn.larry.spring;
 2 
 3 import org.springframework.beans.factory.annotation.Value;
 4 import org.springframework.stereotype.Component;
 5 
 6 @Component
 7 public class AnotherObj {
 8     @Value("${jdbc.user}")
 9     private String name;
10     @Value("${jdbc.pwd}")
11     private String pwd;
12 
13     public String getName() {
14         return name;
15     }
16 
17     public void setName(String name) {
18         this.name = name;
19     }
20 
21     public String getPwd() {
22         return pwd;
23     }
24 
25     public void setPwd(String pwd) {
26         this.pwd = pwd;
27     }
28 
29 }
View Code

相关文章:

  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2021-10-05
  • 2022-02-12
  • 2021-05-13
  • 2021-07-03
  • 2021-11-02
猜你喜欢
  • 2022-02-21
  • 2021-10-06
  • 2022-12-23
  • 2021-08-01
相关资源
相似解决方案