Spring 3 (.0.2.RELEASE)와 JPA2 및 Hibernate 3.5.1-Final을 시도 중입니다 ... 한 가지 일은 저에게 봄이 단지 " transactionManager "transactionManager의 이름이 "transactionManager"가 아닌 경우
"transactionManager "의 이름을 지정하지 않으면, Spring은 을 던집니다. NoSuchBeanDefinitionException : 'transactionManager'라는 bean이 없습니다.이 정의됩니다.
여기 내 설정이다 :
<context:component-scan base-package="destiny.data.mining"/>
<context:annotation-config/>
<bean id="miningEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="mining"/>
</bean>
<bean id="miningTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" >
<property name="entityManagerFactory" ref="miningEntityManagerFactory"/>
</bean>
<tx:advice id="txAdviceMining" transaction-manager="miningTransactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="methods" expression="execution(* destiny.utils.AbstractDao+.*(..))"/>
<aop:advisor advice-ref="txAdviceMining" pointcut-ref="methods"/>
</aop:config>
<tx:annotation-driven transaction-manager="miningTransactionManager"/>
이 설정에서, 엔티티 관리자 공장 하지 반드시 "의 EntityManagerFactory"및 "txAdvice을"라는 이름 하지 필요 하나, "txAdvice"라는. 하지만 왜 지구상에서 Spring은 "transactionManager"라는 트랜잭션 관리자가 필요합니까?
트랜잭션 관리자 "transactionManager"의 이름을 지정하지 않는 방법이 있습니까? (I 여러 스프링 설정 파일을 실행 해요, 그래서 이름 충돌을 피하기 위해 최선을 다할)
테스트 코드 :
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:mining.xml"})
public class MiningPersonDaoTest
{
@Inject
private EntityManagerFactory miningEntityManagerFactory;
@Inject
private MiningPersonDao miningPersonDao;
@Transactional
@Test
public void testUpdate()
{
MiningPerson p = miningPersonDao.get(42L);
p.setLocationName("OOXX");
miningPersonDao.update(p);
System.out.println(p);
}
}
고마워요! 그것은 해결되었습니다! – smallufo
하지만 DAO가 Wicket과 같은 다른 프레임 워크에 삽입 되어도 여전히 걱정됩니다. 여전히 Wicket의 구성 요소에 @TransactionConfiguration을 추가 할 수 있습니까? – smallufo
확실한 방법을 시도해보아야하지만, "실제"컨텍스트에서 주석이 필요 없다고 생각합니다. Spring은 bean id를 기반으로 올바른 transactionManager를 찾습니다. 후손이 볼 수 있도록 여기에 결과를 게시 할 수 있다면 좋을 것입니다. –