【问题标题】:Injecting properties with Spring?用 Spring 注入属性?
【发布时间】:2015-06-13 10:24:31
【问题描述】:

我正在使用 Spring,我想通过依赖注入来启动我的服务(模型)。我的服务需要一个属性对象,其中包含数据库的 url、用户、密码、ssl、sslfactory 参数。我想知道这是否仍然可以使用依赖注入来完成。

所以我的构造函数看起来像这样:Service(Properties propertie) 在我的控制器内部,我有一个私人现场服务:

@Autowired
private Service service;

现在我想在其中注入正确的属性。

<bean id="service" class="service.Service">
        <constructor-arg > 
            <value>?</value>
        </constructor-arg> 
    </bean>

不知道能不能搞定,谁能帮帮我?提前致谢。

【问题讨论】:

  • 您使用的是纯xml方法吗?
  • 是的,我想是的,我还能用什么? (我是 Spring 新手)
  • 替代 xml 配置,您可以使用注释和 @Autowired 和 来管理依赖项。请查看 Spring 文档,它写得很好。

标签: java spring properties code-injection


【解决方案1】:

正确的方法是使用 PropertyPlaceholderConfigurer。

【讨论】:

    【解决方案2】:

    试试这个:

    <util:properties id="props" location="classpath:props.properties" />
    

    然后:

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

    它将属性直接注入该字段。 您需要使用注释配置。

    或者如果你更喜欢纯 xml,那么试试这个:

    <bean id="service" class="service.Service">
        <constructor-arg > 
            <value>#{props['foo']}</value>
        </constructor-arg> 
    </bean>
    

    【讨论】:

    • #{props['foo']} , foo 指向哪里?还有,我的 database.properties 文件应该放在哪里?下web.xml?
    • 它指向 id 为 "props" 的属性对象,指向属性名称 foo,它应该位于类路径中的任何位置。例如在 WEB-INF/classes 文件夹下。或者在 src/resources 中,如果你使用的是 maven。
    • 我不明白你的回答,对不起。我正在阅读更多内容并尝试使其正常工作。无论如何,谢谢。
    • 您说#{props['foo']} 指向属性文件中的一个特定键值对。但这不是我想要的。我想将整个属性对象传递给我的服务,而不是键值对键值。但是所有的键值对一次。还是我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2012-08-06
    • 2014-02-17
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多