当前位置: 首页 > 知识库问答 >
问题:

混合了PropertySourcesplaceConfigurer和java类型的Springbean。util。属性

葛高澹
2023-03-14

我在下面的应用程序上下文xml上有这些配置

  <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jmsconfig.properties</value>
            </list>
        </property>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="order" value="1"/>
    </bean>

    <bean id="jmsConfigPropertyPlaceHolder" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">           
        <property name="locations">
            <list>
                <bean class="org.springframework.core.io.FileSystemResource">
                    <constructor-arg value="#{systemEnvironment['SHARED_DIR']}/messaging/broker.properties" />
                </bean>         
            </list>
        </property>    
    </bean>

    <bean id="jmsProperties" class="java.util.Properties">
        <constructor-arg>
            <props>
                <prop key="transportURI">${transportURI}</prop>
                <prop key="maxConcurrentConsumers">${maxConcurrentConsumers}</prop>
                <prop key="timeToLive">${timeToLive}</prop>
                <prop key="cacheConsumer">${cacheConsumer}</prop>
                <prop key="cacheProducer">${cacheProducer}</prop>
                <prop key="deliveryPersistent">${deliveryPersistent}</prop>
            </props>
        </constructor-arg>
    </bean>

我在加载上下文时遇到以下异常

组织。springframework。豆。工厂UnsatifiedPendencyException:创建名为“org”的bean时出错。springframework。上下文支持在类路径资源[dbaccessContext.xml]中定义的PropertySourcesPlaceholderConfigurer#0]:通过bean属性“properties”表示的未满足的依赖关系:未定义[java.util.properties]类型的合格bean:预期为单个匹配bean,但找到2:jmsProperties、systemProperties;嵌套的异常是org。springframework。豆。工厂NonuniqueBeandDefinitionException:未定义[java.util.Properties]类型的限定bean:应为单个匹配bean,但找到3个:jmsProperties,systemProperties

感谢您对此的任何帮助。

更新。

我找到了导致我的上下文无法加载的根本原因,因为我的上下文有:default autowire=“byType”,所以Spring将尝试按类型注入我的所有Spring属性。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/util 
http://www.springframework.org/schema/util/spring-util-3.0.xsd"
    **default-autowire="byType"**>

删除默认autowire=“byType”后,我的应用程序现在可以工作了。

共有1个答案

马侯林
2023-03-14

如果你仔细阅读异常消息,它已经告诉你com。阿卢。奥夫。ngnms。财产。PropertySourcesPlaceholderConfigurer#0不是Spring类,它有一个正在注入的属性字段。

不幸的是,代码没有预料到应用程序上下文中可能会有多个属性bean。您必须修改该(异常内部)类,并通过名称显式指定它最初期望的属性bean(使用@Named@Resource,具体取决于您的代码约定)。

 类似资料:
  • 在ORM映射类上定义具有“混合”行为的属性。 “混合”是指属性在类级别和实例级别定义了不同的行为。 这个 hybrid 扩展提供了一种特殊形式的方法修饰器,大约有50行代码,几乎不依赖于其他的sqlacalchemy。理论上,它可以与任何基于描述符的表达式系统一起工作。 考虑映射 Interval ,表示整数 start 和 end 价值观。我们可以在生成类级SQL表达式的映射类上定义更高级别的函

  • 7.4. 混合切面类型 我们完全可以混合使用以下几种风格的切面定义:使用自动代理的@AspectJ 风格的切面,schema-defined <aop:aspect> 的切面,和用 <aop:advisor> 声明的advisor,甚至是使用Spring 1.2风格的代理和拦截器。 由于以上几种风格的切面定义的都使用了相同的底层机制,因此可以很好的共存。

  • 问题 你有一些通用方法,你想把他们包含到很多不同的类中。 解决方案 使用 mixOf 库函数,它会生成一个混合父类。 mixOf = (base, mixins...) -> class Mixed extends base for mixin in mixins by -1 #earlier mixins override later ones for name, method

  • 我已经有了一个工作中的swagger文档,它使用swagger UI项目生成文档,但我遇到了一个小问题。 Mongoose支持的数据类型,这基本上是一个可以包含任何内容的非结构化对象。但是,根据Swagger规范,属性的的唯一可能值是、、、和。我在留档、Google或GitHub上Swagger-Spec项目的开放问题中找不到任何允许混合数据类型的内容。 在Swagger-Spec留档中,它们定义

  • 任务控制器 创造jsp 在控制器中,我用相同的错误(以及不同的格式,如“yyyy/MM/dd”)编写了以下内容 我还尝试在类中添加注释(以及使用不同的格式),但出现了相同的错误

  • 我正在尝试使用Spring MVC、Java和MySql在我的网络应用程序中实现完整的日历插件。当我尝试在我的jsp中使用“输入类型=日期”添加日期时,我一直收到这个错误: 在我的控制器类中,我使用SimpleDateFormat格式化日期: 最后在我的Jsp中: 这是DAO实现: 在我的实体类中,我将变量保存为日期 我认为问题在于日期的解析,但我不确定!对此问题的任何解释都将不胜感激。