使用
等构造@Component
public class SomeClass {
@Inject
private Environment env;
private String key;
@PostConstruct
private void init() {
key = env.getProperty("SOME_KEY_PROPERTY");
}
....
}
可以为某些字段指定一些属性。
是否有更简洁,更简洁的表格?
答案 0 :(得分:38)
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
答案 1 :(得分:37)
您应该可以这样做(假设您已注册PropertySourcesPlaceHolderConfigurer)
@Value("${SOME_KEY_PROPERTY}")
private String key;
答案 2 :(得分:16)
如果未定义变量,您可能还会发现提供 默认值 很有用:
@Value("${some_property:default_value}")
private String key;
否则,只要未定义some_property
,您就会收到异常。
default_value
也可以为空白,在这种情况下,它的行为就像some_property
是可选的一样:
@Value("${some_property:}")
private String key;
(注意冒号)
如果默认值包含特殊字符(点,冒号等),则将其包装在SpEL中,如下所示:
@Value("${some_property:#{'default_value'}}")
private String key;
答案 3 :(得分:3)
如果您需要将环境变量添加为默认值。
@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")
这是前两个答案的组合。