Java Spring:如何使用`@ Value`注释注入`Environment`属性?

时间:2013-01-31 01:51:44

标签: 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");

    }

    ....
}

可以为某些字段指定一些属性。

是否有更简洁,更简洁的表格?

4 个答案:

答案 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}}")

这是前两个答案的组合。