-
@Transactional(선언적 트랜잭션) bean Id 지정해서 사용하기웹 개발/Spring Framework 2018. 6. 28. 14:53
스프링에서 일반적으로 선언적 트랜잭션을 사용하기 위해서는
dataSource가 있는 xml 위치에서
123<!-- datasource가 있는 xml--><tx:annotation-driven/>cs 을 선언해서 사용한다.
하지만, 복수개의 트랜잭션을 사용하기 싶어하는 분들도 있을 것이고,
나처럼 기존 소스를 안 건드리기 위해 특정 부분에서만 트랜잭션을 걸어주고 싶을 수 있다.
에러가 발생해야 내가 무엇을 몰랐는지 알게 되는 것 같다.
(에러의 긍정적인 부분이라 생각함)
123<!-- datasource가 있는 xml--><tx:annotation-driven/>cs dataSource가 있는 xml에서 위와 같이 선언하고 JUnit을 돌려보았더니
위와 같은 에러가 발생했다.
이게 무엇인지 구글링을 해보니 tx:anntation-driven은 default 값으로 transactinManager로 선언된
DataSourceTransactionManager를 찾는 것을 알았다.
아무 것도 없이 선언을 해두면 transactionManager라는 bean을 찾는다는 것이다.
특정 bean Id를 찾게 하기 위해서는 다음과 같이 xml을 작성한다.
1234567<!-- datasource가 있는 xml--><tx:annotation-driven transaction-manager="chocolateTransactionManager"/><bean id="chocolateTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="egov.dataSource" /></bean>cs <tx:annotation-driven 뒤에 transaction-manager="빈 아이디"/>로 만들어주는 것이다.
자바 코드에서도 @Transactional을 사용할 때도 bean Id를 지정해주어야한다.
1234567/* 트랜잭션을 사용할 자바 클래스 */@Transactional("chocolateTransactionManager")public int testMethod(){int chocolateCount = testService.insertChoco;return chocolateCount;}cs 1. tx-annotaion-driven을 DataSourceTransaction 클래스의 bean 아이디를 기입한다.
2. 사용할 트랜잭셔널 애노테이션에서 bean Id를 작성한다.
'웹 개발 > Spring Framework' 카테고리의 다른 글
[Mybatis]mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정 (0) 2018.11.20 [Spring] @PostConstruct란?(정의와 장점) (0) 2018.11.12 이클립스(Eclipse) 설정 내보내기/가져오기 방법 (0) 2018.06.27 JUnit에서 Controller 테스트 코드 작성하기(정리) (0) 2018.06.18 JUnit에서 세션 생성을 어떻게 해야할까?(JUnit에서 session 처리) (0) 2018.05.23