java - 组合上下文:property-override and PropertyPlaceholderConfigurer

标签 java spring

我对以下spring上下文配置文件有问题:

...
   <context:property-override location="classpath:query_1.properties" />
        <bean
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations" value="classpath:query_2.properties" />
        </bean>
....

问题是找不到文件“query_2.properties”中的属性。我得到的异常(exception)是以下一个:

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException. Could not resolve placeholder...

现在我的问题是: context:property-override 和 PropertyPlaceholderConfigurer 的组合是否可能没有意义?谁能用简单的话解释一下两者之间有什么区别?任何帮助将不胜感激。

谢谢。贺拉斯

最佳答案

属性占位符,通常使用 <context:property-placeholder location=../> 定义解析 bean 定义中的占位符:

例如。

<bean name="myclass" class="MyClass">
    <property name="prop1" value="${prop1val}/>
</bean>

如果使用属性占位符指定的位置具有名为 prop1val 的属性:

prop1val=aval

那么在bean中就会被替换myclass .

使用<context:property-override location="classpath:query_1.properties" />定义的PrpertyOverrideConfigurer另一方面就像推送机制,属性的形式为 beanname.property它将将此属性推送到名为 beanname 的 bean 中.

例如。对于上述情况,如果该位置具有以下属性:

myclass.prop1=aval

然后它会注入(inject)prop1myclass bean

您收到的异常只是表明它无法找到 query_2.properties文件,我怀疑是否是任何其他配置问题。

如果两者都定义了,哪一个生效,我认为最后一个生效。

关于java - 组合上下文:property-override and PropertyPlaceholderConfigurer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009858/

相关文章:

java - 如何让我的代码来查找 Java 数组中的数字是否重复?

java - 按钮之间存在无法解释的空格

java - Hibernate Criteria API 仅使用 id 连接到另一个表

java - Solr 4.3.0 HTTP 状态 500

java - JBOSS 服务器 5.0.1.GA 上的部署问题

java - spring 拦截器处理程序令人困惑的行为

java - 访问类中的字段

spring - 用于 API 安全性的 AntMatcher 和 contextPath

Java Spring REST API 状态 400 对 POST/PUT 的响应

java - 消息转换器在 Spring 中不工作