[SPRING] 'transactionManager'라는 이름의 bean이 정의되지 않았습니다.
SPRING'transactionManager'라는 이름의 bean이 정의되지 않았습니다.
필자는 아래 그림과 같이 엔티티 관리자가 설정된 두 개의 영구 단위를 구성했습니다.
<bean id="liveEntityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="LiveDataSource">
<property name="persistenceUnitName" value="LivePersistenceUnit" />
</bean>
<bean id="archiveEntityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="ArchiveDataSource">
<property name="persistenceUnitName" value="ArchivePersistenceUnit" />
</bean>
그런 다음 트랜잭션 관리자를 다음과 같이 구성했습니다.
<bean id="LiveTransactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="liveEntityManagerFactory"/>
<bean id="ArchiveTransactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="archiveEntityManagerFactory"/>
원래는 하나만 구성되었고 "transactionManager"라고 불렀습니다. Addint 추가 영구적 인 단위 오류를 생성하는 것 같습니다. 한 가지 내가 이해하지 못한다면, 두 개의 영구적 인 유닛 (각각 별도의 데이터베이스 용)을 구성하면 각각의 데이터 소스에 대해 개별 엔티티 관리자와 트랜잭션 관리자를 구성해야합니까?
내가 얻는 오류는 아래에 나와 있습니다 : (나는 모든 파일을 검색하고 "transactionManager"에 대한 참조가있는 곳에서는 찾을 수 없습니다)
org.springframework.ws.soap.client.SoapFaultClientException: No bean named 'transactionManager' is defined
at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37)
at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:774)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:600)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:384)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:370)
at com.ws.client.SoapTest.testFail(SoapTest.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
나는 Jpa / Hibernate로 Spring을 사용하고있다.
감사
해결법
-
==============================
1.transaction-manager 속성의 기본값은 transaction-manager입니다. 귀하의 경우, 다음과 같이 메소드 또는 서비스별로 사용할 트랜잭션 관리자를 지정해야합니다.
transaction-manager 속성의 기본값은 transaction-manager입니다. 귀하의 경우, 다음과 같이 메소드 또는 서비스별로 사용할 트랜잭션 관리자를 지정해야합니다.
@Service @Transactional(value="LiveTransactionManager") class someClass...
또는
@Transactional(value="ArchiveTransactionManager") public void someMethod
-
==============================
2.사실 Spring Data JPA와 함께 이름이 지정된 TransactionManager를 사용하는 방법이 있습니다. 이것은 나를 위해 작동합니다 :
사실 Spring Data JPA와 함께 이름이 지정된 TransactionManager를 사용하는 방법이 있습니다. 이것은 나를 위해 작동합니다 :
<bean id="myTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="myEntityManagerFactory" /> </bean> <tx:annotation-driven transaction-manager="myTransactionManager"/> <jpa:repositories base-package="com.xxx.yyy" entity-manager-factory-ref="myEntityManagerFactory" transaction-manager-ref="myTransactionManager"> </jpa:repositories>
from https://stackoverflow.com/questions/10719646/no-bean-named-transactionmanager-is-defined by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Autowire로 JUnit 테스트를 작성하는 방법은 무엇입니까? (0) | 2019.01.04 |
---|---|
[SPRING] ClassFile - ArchiveException을 빌드 할 수 없습니다. (0) | 2019.01.04 |
[SPRING] 봄 보안 : intercept-url 패턴 access = "# id == 1 (0) | 2019.01.04 |
[SPRING] Java 8을 사용하는 Spring 3.2.x (0) | 2019.01.04 |
[SPRING] 스프링 4 정적 리소스로드 (0) | 2019.01.04 |