我有一个实现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']}")
但没有成功。
我在做什么错误?
答案 0 :(得分:1)
我已经检查了你的git存储库中的类。问题是实现Condition
接口的类。 Spring容器不会将类对象视为bean,因此它不会在同一实例上执行自动装配和任何@Value
处理。这就是您的@Value
字段获得null
值的原因。
您可以从以下ConditionContext
获取值:
conditionContext.getEnvironment().getProperty("userstore.host");
conditionContext.getEnvironment().getProperty("userstore.port");
或者您可以使用代码中提到的java.lang.System
类来获取值。