Java 使用数据源代理时创建多个数据源bean

Java 使用数据源代理时创建多个数据源bean,java,hibernate,spring-mvc,datasource,Java,Hibernate,Spring Mvc,Datasource,我试图用我的当前应用程序实现datasource代理 我在SpringXML中配置了datasource对象,即在dataSourceProxy对象中传递datasource 侦听器和筛选器的配置与文档中的配置相同 Spring xml文件: <bean id="dataSourceReal" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" val

我试图用我的当前应用程序实现datasource代理

我在SpringXML中配置了datasource对象,即在dataSourceProxy对象中传递datasource

侦听器和筛选器的配置与文档中的配置相同

Spring xml文件:

<bean id="dataSourceReal" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="jdbc/myDS" />
        <property name="resourceRef" value="true" />
        <property name="lookupOnStartup" value="false" />
        <property name="proxyInterface" value="javax.sql.DataSource" />
    </bean>


     <bean id="dataSourceProxy" class="net.ttddyy.dsproxy.support.ProxyDataSource">
            <property name="dataSource" ref="dataSourceReal" />
            <property name="listener" ref="listeners" />
        </bean>

        <bean id="listeners" class="net.ttddyy.dsproxy.listener.ChainListener">
            <property name="listeners">
                <list>
                    <bean
                        class="com.my.sql.logging.DataSourceQueryLoggingListener" />
                </list>
            </property>
        </bean> 

请帮忙。

我终于从中找到了这个问题的解决方案

每当我们的应用程序配置了多个数据源时

我们可以在java主bean上指定
@Primary
注释

使用xml时,我们可以将主bean指定为

<bean id="dataSourceProxy" primary="true" class="net.ttddyy.dsproxy.support.ProxyDataSource">


您的代码中是否使用了@Autowired注释?我没有使用@Autowired注释进行此配置。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [javax.sql.DataSource] is defined: expected single matching bean but found 2: [dataSourceReal, dataSourceProxy]
<bean id="dataSourceProxy" primary="true" class="net.ttddyy.dsproxy.support.ProxyDataSource">