@Value不适用于按预期实现Condition的类

时间:2018-03-19 18:40:05

标签: spring

我有一个实现Spring Condition here的类。 当我运行main应用程序时,它会在控制台中输出以下输出。

host = null
port = 0
${userstore.host} localhost
${userstore.port} 3000
returns true

使用@Value("${userstore.host}")@Value("${userstore.port}")注释的主机和端口分别为null和0,但是当我打印System.out.println("${userstore.host} " + System.getProperty("userstore.host"))System.out.println("${userstore.port} " + System.getProperty("userstore.port"))时,它会正确打印配置的值。

我也试过@Value("#{systemProperties['userstore.host']}")但没有成功。

我在做什么错误?

1 个答案:

答案 0 :(得分:1)

我已经检查了你的git存储库中的类。问题是实现Condition接口的类。 Spring容器不会将类对象视为bean,因此它不会在同一实例上执行自动装配和任何@Value处理。这就是您的@Value字段获得null值的原因。

您可以从以下ConditionContext获取值:

conditionContext.getEnvironment().getProperty("userstore.host");
conditionContext.getEnvironment().getProperty("userstore.port");

或者您可以使用代码中提到的java.lang.System类来获取值。