Par*_*uti 17 spring annotations
我需要@Value在类的实例变量中使用注入参数,并且可以在其所有子类中重用该变量.
@Value(server.environment)
public String environment;
public String fileName = environment + "SomeFileName.xls";
Run Code Online (Sandbox Code Playgroud)
这里的问题是fileName首先初始化然后发生环境注入.所以我总是得到null-SomeFileName.xls.
无论如何要@Value在春天首先进行初始化.
Fra*_*eth 22
你可以这样使用@PostConstruct.来自文档:
PostConstruct注释用于在完成依赖项注入以执行任何初始化之后需要执行的方法.
@PostConstruct允许您在设置属性后执行修改.一个解决方案是这样的:
public class MyService {
@Value("${myProperty}")
private String propertyValue;
@PostConstruct
public void init() {
this.propertyValue += "/SomeFileName.xls";
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用@Autowired配置方法.来自文档:
将构造函数,字段,setter方法或配置方法标记为由Spring的依赖注入工具自动装配.
...
配置方法可以有任意名称和任意数量的参数; 每个参数都将使用Spring容器中的匹配bean进行自动装配.Bean属性设置器方法实际上只是这种通用配置方法的特例.这种配置方法不必是公开的.
例:
public class MyService {
private String propertyValue;
@Autowired
public void initProperty(@Value("${myProperty}") String propertyValue) {
this.propertyValue = propertyValue + "/SomeFileName.xls";
}
}
Run Code Online (Sandbox Code Playgroud)
区别在于,对于第二种方法,您没有额外的bean挂钩,您可以在自动装配时对其进行调整.
| 归档时间: |
|
| 查看次数: |
32257 次 |
| 最近记录: |