Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在哪种情况下,我需要提供spring类名作为bean id值?_Java_Spring_Hibernate_Spring Mvc_Jpa - Fatal编程技术网

Java 在哪种情况下,我需要提供spring类名作为bean id值?

Java 在哪种情况下,我需要提供spring类名作为bean id值?,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我需要为DAO配置xml文件。因此,在我的xml文件中,我声明了两个entityManager工厂,我想将其中一个设置为默认持久化单元。我在dao.xml中声明了这一部分,如下所示 <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"> property name="defaultPersistenceUnitName" value="pumps-jpa

我需要为DAO配置xml文件。因此,在我的xml文件中,我声明了两个entityManager工厂,我想将其中一个设置为默认持久化单元。我在dao.xml中声明了这一部分,如下所示

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
    property name="defaultPersistenceUnitName" value="pumps-jpa"/>
</bean>

property name=“defaultPersistenceUnitName”value=“pumps jpa”/>
但是,它对我不起作用,它没有使用默认的持久性单元。我犯了这样的错误

未定义类型为的唯一bean:应为单个bean,但找到2个:

经过大量搜索,我找到了一个代码片段,其中他们提到bean id是spring类名,即org.springframework.context.annotation.internalPersistenceAnnotationProcessor,如下所示

<bean id="org.springframework.context.annotation.internalPersistenceAnnotationProcessor"
  class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
     property name="defaultPersistenceUnitName" value="pumps-jpa"/>
</bean>

property name=“defaultPersistenceUnitName”value=“pumps jpa”/>
所以,在提到这个bean id之后,它采用了默认的持久性单元名称。我想知道,为什么我需要提到spring类(org.springframework.context.annotation.internalPersistenceAnnotationProcessor)作为bean id?是黑客还是什么

整个dao.xml声明如下

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="file:${catalina.base}/conf/pumps-dbconfig.properties"/>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass">
        <value>${jdbc.driver}</value>
    </property>
    <property name="jdbcUrl">
        <value>${jdbc.url}</value>
    </property>
    <property name="user">
        <value>${jdbc.user}</value>
    </property>
    <property name="password">
        <value>${jdbc.password}</value>
    </property>
    <property name="initialPoolSize"><value>10</value></property>
    <property name="minPoolSize"><value>10</value></property>
    <property name="maxPoolSize"><value>${jdbc.maxConnections}</value></property>
    <property name="maxIdleTimeExcessConnections"><value>600</value></property>
    <!-- <property name="timeout"><value>0</value></property> -->   <!-- 0 means: no timeout -->
    <property name="idleConnectionTestPeriod"><value>60</value></property>
    <property name="acquireIncrement"><value>5</value></property>
    <property name="maxStatements"><value>0</value></property>  <!-- 0 means: statement caching is turned off.  -->
    <property name="numHelperThreads"><value>3</value></property>  <!-- 3 is default -->         
    <property name="unreturnedConnectionTimeout"><value>0</value></property>
    <property name="debugUnreturnedConnectionStackTraces"><value>true</value></property>
    <property name="testConnectionOnCheckout"><value>true</value></property>
</bean>

<!--
    Configuration for Hibernate/JPA
-->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="pumps-jpa" />
    <property name="dataSource" ref="dataSource" />
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="false" /> 
            <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
        </bean>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    <property name="dataSource" ref="dataSource" />
</bean>

<!-- DEFAULT PERSISTENCE UNIT DECLARATION -->  

 <bean id="org.springframework.context.annotation.internalPersistenceAnnotationProcessor" 
    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor">
    <property name="defaultPersistenceUnitName" value="pumps-jpa"/>   
</bean>

<bean id="r-dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass">
        <value>${r-jdbc.driver}</value>
    </property>
    <property name="jdbcUrl">
        <value>${r-jdbc.url}</value>
    </property>
    <property name="user">
        <value>${r-jdbc.user}</value>
    </property>
    <property name="password">
        <value>${r-jdbc.password}</value>
    </property>
    <property name="initialPoolSize"><value>10</value></property>
    <property name="minPoolSize"><value>10</value></property>
    <property name="maxPoolSize"><value>${r-jdbc.maxConnections}</value></property>
    <!-- <property name="timeout"><value>0</value></property> -->   <!-- 0 means: no timeout -->
    <property name="maxIdleTimeExcessConnections"><value>600</value></property>
    <property name="idleConnectionTestPeriod"><value>60</value></property>
    <property name="acquireIncrement"><value>5</value></property>
    <property name="maxStatements"><value>0</value></property>  <!-- 0 means: statement caching is turned off.  -->
    <property name="numHelperThreads"><value>3</value></property>  <!-- 3 is default -->    
    <property name="acquireRetryAttempts"><value>3</value></property>      
    <property name="testConnectionOnCheckout"><value>true</value></property>
</bean>

<!--
    Configuration for Hibernate/JPA
-->
 <bean id="r-entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="pumps-jpa" />
    <property name="dataSource" ref="r-dataSource" />
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="false" /> 
            <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
        </bean>
    </property>
</bean>

<bean id="BaseDataConnection" class="com.myntra.commons.dao.impl.BaseDataConnection">
        <property name="roEntityManagerFactory" ref="r-entityManagerFactory" />
</bean> 

${jdbc.driver}
${jdbc.url}
${jdbc.user}
${jdbc.password}
10
10
${jdbc.maxConnections}
600
60
5.
0
3.
0
真的
真的
${r-jdbc.driver}
${r-jdbc.url}
${r-jdbc.user}
${r-jdbc.password}
10
10
${r-jdbc.maxConnections}
600
60
5.
0
3.
3.
真的

我认为你最初的问题不是你的意思通过配置,您可以将实体管理器的一个现有持久性单元实现称为“默认持久性单元”您可以在XML配置中执行此操作!JPA中的persistence.xml是您的持久性配置。您的bean(配置)xml是指向某些已定义持久性单元的另一个选项。请发布您的整个配置xml

对于Bean ID的其余问题: 容器中已经有一个用相同名称初始化的Bean。
容器正在使用Bean Id作为可识别代码片段的唯一Id!如果您使用另一个名称,那么您的容器将初始化同一类的另一个bean实例并给它另一个名称。然而,正如我在上面指出的,这与你的问题无关!(即使您可以绕过现有的bean实现,并在没有其他选项的情况下重新定义配置!)

我认为您最初的问题不是您的意思通过配置,您可以将实体管理器的一个现有持久性单元实现称为“默认持久性单元”您可以在XML配置中执行此操作!JPA中的persistence.xml是您的持久性配置。您的bean(配置)xml是指向某些已定义持久性单元的另一个选项。请发布您的整个配置xml

对于Bean ID的其余问题: 容器中已经有一个用相同名称初始化的Bean。
容器正在使用Bean Id作为可识别代码片段的唯一Id!如果您使用另一个名称,那么您的容器将初始化同一类的另一个bean实例并给它另一个名称。然而,正如我在上面指出的,这与你的问题无关!(即使您可以绕过现有的bean实现,并在没有其他选项的情况下重新定义配置!)

发布整个配置xml发布整个配置xml在我的容器中哪个bean具有相同的名称?我没有完全理解你:(你知道。)Id是唯一的。如果您想使用相同的名称/类初始化一个新bean,您需要给它一个新id…在我的容器中哪个bean具有相同的名称?我没有完全理解你:(你知道。)Id是唯一的。如果您想使用相同的名称/类初始化一个新bean,您需要给它一个新id。。。