Spring - @Value返回null

时间:2017-06-14 10:42:09

标签: java spring spring-mvc

我在 / src / main / resources / 下有一个属性文件,我想用Spring加载数据。

在我的Spring-context.xml中,我有这个:

<context:property-placeholder location="classpath:UserUtil.properties" />

并且还有<context:component-scan base-package="com.myApp" />

在我的课堂上我加载它:

@Value("${injectMeThis}")
private String injectMeThis;

但值始终为空

修改

检查是否值,我用这个:

System.out.println(new myClass().getInjectMeThis());

3 个答案:

答案 0 :(得分:4)

System.out.println(new myClass().getInjectMeThis());

Spring只会解析它知道的bean上的@Value注释。你使用的代码创建了一个超出Spring范围的类的实例,因此Spring不会对它做任何事情。

假设您已正确设置应用程序上下文,@Value不能null,因为这将停止正确启动您的应用程序。

您的XML文件包含<context:component-scan />,假设myClass是该软件包的一部分,最简单的解决方案是将@Component添加到myClass,然后从上下文中检索实例创建一个新实例。

答案 1 :(得分:-1)

在您的课程中,添加班级注释@PropertySource("UserUtil.properties")。这应该可以解决问题。

答案 2 :(得分:-1)

向您的班级添加类强度注释,例如&#34; @PropertySource(&#34; classpath:FileName.properties&#34;)&#34; 。 目前它没有获取文件来注入值。

E.g。 的 @PropertySource(&#34;类路径:FileName.properties&#34)

公共类ClassName