@Value
@Value注解注入@Value("#{}")和@Value("${}")的区别
@Value("#{}") SpEL表达式
@Value("#{}") 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量
- @Value("#{1}")
- private int number; //获取数字 1
@Value("${}") 可以获取对应属性文件中定义的属性值。
假如我有一个sys.properties文件 里面规定了一组值: web.view.prefix =/WEB-INF/views/
在springMvc.xml文件中引入下面的代码
- <context:property-placeholder
- ignore-unresolvable="true" location="classpath:sys.properties" />
这样就可以通过@Value("${web.view.prefix}")获取这个字符串,但是只能在springMvc.xml文件中扫描或者注册的bean中才能通过@Value("${web.view.prefix}")获取这个字符串,其他未在springMvc.xml扫描和定义的bean必须在相应的xml文件中引入上面代码才能使用@Value("${}”)表达式
再controller或者其他组件中通过下面代码即可获取“”/WEB-INF/views/“”这个字符串
- @Value("${web.view.prefix}")
- private String prefix;
Spel表达式学习:
自定义注解(面向切面):