我在 / 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());
答案 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