使用Spring和注释@Value注入属性

我正在尝试将属性文件加载到Spring bean中,然后将该bean注入到类中。

我无法工作的唯一部分似乎是使用@Resource参考。有人可以为我连接最后一块吗? 我每次都得到一个空值。 似乎不想注入价值。

[编辑] – 我原本以为使用@Resource是最好的方法,但我发现的解决方案更容易。

我在另一篇文章中看到这个解决方案

参考解决方案链接:将 属性值注入Spring – 由DON发布

感谢Don的post,但我不知道如何用@Resource完成它。

调试结果:变量值appProperties始终为null。 它没有被注射。

Spring Config。 在此处输入图像描述

样本类:

 package test; import java.util.Properties; import javax.annotation.Resource; public class foo { public foo() {} @Resource private java.util.Properties appProperties; } 

基于以下批准的解决方案中的建议。 以下是我所做的更改。


解决方案更新

Spring配置: 在此处输入图像描述

Java类: 在此处输入图像描述

为了使你的解决方案工作,你还需要使foo成为一个Spring托管bean; 因为否则Spring会如何知道它必须处理你class上的任何注释?

  • 您可以在appcontext xml中将其指定为bean,其中包含..class="foo"
  • 或者使用component-scan并指定包含foo类的基本包。

因为我不完全确定这正是你想要的(你不想让Spring解析一个.properties 文件并且它的键值对可用而不是一个Properties对象吗?),我建议你另一个解决方案:使用util命名空间

  

并引用bean中的值(也必须是Spring管理的):

 @Value("#{props.foo}") public void setFoo(String foo) { this.foo = foo; } 

编辑:

刚刚意识到你要在你的类中导入org.springframework.context.ApplicationContext ,这可能是不必要的。 我强烈建议您至少在前几章阅读Spring参考文章 ,因为a)这是一本很好的阅读b)如果基础知识清楚,你会发现Spring更容易理解。

使用属性占位符的另一个解决方案。

spring背景:

     

要注入属性值的java类:

 public class ClassWithInjectedProperty { @Value("${props.foo}") private String foo; }