Abd*_*ull 34 java spring dependency-injection
使用诸如的结构
@Component
public class SomeClass {
@Inject
private Environment env;
private String key;
@PostConstruct
private void init() {
key = env.getProperty("SOME_KEY_PROPERTY");
}
....
}
Run Code Online (Sandbox Code Playgroud)
可以为某些字段分配一些属性.
有没有更短,更简洁的形式来做到这一点?
Abd*_*ull 42
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
Run Code Online (Sandbox Code Playgroud)
Bij*_*men 38
您应该能够这样做(假设您已注册PropertySourcesPlaceHolderConfigurer)
@Value("${SOME_KEY_PROPERTY}")
private String key;
Run Code Online (Sandbox Code Playgroud)
rus*_*tyx 20
如果未定义变量,您可能还会发现提供默认值很有用:
@Value("${some_property:default_value}")
private String key;
Run Code Online (Sandbox Code Playgroud)
否则,无论何时some_property未定义,您都会收到异常.
default_value也可以是空白,在这种情况下,它的行为就像some_property是可选的:
@Value("${some_property:}")
private String key;
Run Code Online (Sandbox Code Playgroud)
(注意冒号)
如果默认值包含特殊字符(点,冒号等),则将其包装在SpEL中,如下所示:
@Value("${some_property:#{'default_value'}}")
private String key;
Run Code Online (Sandbox Code Playgroud)
如果需要添加环境变量作为默认值。
@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")
Run Code Online (Sandbox Code Playgroud)
这是之前两个答案的组合。
| 归档时间: |
|
| 查看次数: |
49439 次 |
| 最近记录: |