46

使用诸如

@Component
public class SomeClass {

    @Inject
    private Environment env;

    private String key;


    @PostConstruct
    private void init() {

        key = env.getProperty("SOME_KEY_PROPERTY");

    }

    ....
}

可以为某些字段分配某些属性。

有没有更短、更简洁的形式来做到这一点?

4

4 回答 4

65
@Component
public class SomeClass {

    @Value("#{environment.SOME_KEY_PROPERTY}")
    private String key;

    ....
}
于 2013-01-31T01:51:43.790 回答
48

您应该能够做到这一点(假设您已注册 PropertySourcesPlaceHolderConfigurer)

@Value("${SOME_KEY_PROPERTY}")
private String key;
于 2013-01-31T02:04:38.573 回答
27

如果未定义变量,您可能还会发现提供默认值很有用:

@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;
于 2017-03-21T15:39:34.770 回答
6

如果您需要添加一个环境变量作为默认值。

@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")

这是前面两个答案的组合。

于 2018-04-27T17:57:27.863 回答