Osc*_*Ryz 14 spring annotations
我看到一个注释的方法 @Value("${some.property}")
如在
@Value("${some.property}")
public void setSomething(String param) {
... do something with param
}
Run Code Online (Sandbox Code Playgroud)
那里的注释是什么?
Eld*_*ael 36
基本上它告诉Spring的AutowiredAnnotationBeanPostProcessor以setSomething解析后的值some.property作为参数来调用方法......但前提是你的bean定义中有一个PropertySourcesPlaceholderConfigurer ; 如果您尚未配置一个,则后处理器只会将字符串"${some.property}"(不带引号)注入您的方法.
如果除非您使用了默认值,否则将无法解析值,将抛出IllegalArgumentException "${some.property:default}".
Spring使用当前的Environment及其PropertySources解析这些值,例如JVM系统属性,Java属性文件等.
你还可以使用Spring表达式语言(规划环境地政司)来解决类似的事情#{someBean.someMethod}或#{systemProperties[user.region]}
旁注:正如文件所述
在调用任何配置方法之前,在构造bean之后立即注入字段.[...] Bean属性setter方法[在本例中]实际上只是这种通用配置方法的特例.
一个常见的错误是尝试使用注入的值在构造函数中执行某些逻辑,但此时该值尚未解析或注入,因为构造函数必须完成才能在config方法中注入值.在这些情况下,您必须在构造函数参数中使用@Value或@Autowired注释.
您还可以使用@PostConstruct或init-method指向将在设置bean属性后执行的方法的XML 属性.或者,您可以实现InitializingBean接口.
| 归档时间: |
|
| 查看次数: |
12210 次 |
| 最近记录: |