到目前为止,我一直在使用 Spring 4.0.8,以下工作正常:
在我的单元测试中,我在 jndi 环境中设置了一个值:
SimpleNamingContextBuilder _simpleNamingContextBuilder =
new SimpleNamingContextBuilder();
_simpleNamingContextBuilder.bind(
"java:comp/env/myBoolVar", true);
_simpleNamingContextBuilder.activate();
然后在我的课堂上,我像这样访问它:
@Value("#{environment.myBoolVar}")
private Boolean _myBoolVar = Boolean.FALSE;
我已经升级到 Spring 4.1.2,这不再有效。始终使用默认值 false,因为 Spring 无法找到该值。
如果我使用旧方法访问此值:
@Resource(mappedName = "java:comp/env/myBoolVar")
它确实有效。
我一直在搜索 SO 和整个网络,我已经看到了大量的信息,但没有一个可以帮助我解决问题。我的理解是 Spring Environment 可以访问 @Value 所做的所有值。所以我不确定问题是什么。