티스토리 뷰
spring boot Transaction(@Transactional)
1.@Transactional 적용된 메서드(상위메소드)에서 @Transactional이 적용되지 않은 메서드(하위메소드)를 호출할때는 Transaction이 적용된다.
2.@Transactional이 적용되지 않은 메서드(상위메소드)에서 적용된 메서드(하위메소드)를 호출하면 Transaction이 무시된다.
3.@Transactional 적용 되지 않은 메서드에서 적용된 메서드를 호출할때 무시된다. 무시되지만 그 상태에서 R을 제외하고 CUD를 2번 이상 할 경우에는 에러를 내뱉는다. Proxy모드에서는 외부 메서드를 호출할 때만 aop 적용되어 메서드를 가로챈다.
4.@Transactional 어노테이션이 붙어 있는 함수는 접근 제어자가 무조건 public 이어야 한다. 그렇지 않다면 트랜잭션이 적용되지 않는다.
AOP ASPECTJ
위 조건들 대로 @Transactional 사용하기 위해선 Aspectj 설정하면된다.(spring-boot 기준)
@SpringBootApplication
@EnableTransactionManagement(proxyTargetClass = true, mode = AdviceMode.ASPECTJ)
@EnableLoadTimeWeaving
위와 같이만 설정을 추가해주고 java 아규먼트를 설정 해야 한다.
spring-instrument-{version}.RELEASE.jar 와 aspectjweaver-{version}.jar 를 다운받자.
이클립스는 실행할때 VM arguments 인텔리j 는 VM options에다가 아래와 같이 넣어주자.
-javaagent:{path}\spring-instrument-4.2.6.RELEASE.jar -javaagent:{path}\aspectjweaver-1.5.3.jar
이게 끝이다.
'Spring-Boot' 카테고리의 다른 글
Spring boot for Apache Kafka (2) | 2019.06.28 |
---|---|
spring boot MessageSource 다국어처리 (0) | 2019.02.08 |
spring boot mybatis 연동 (0) | 2019.02.06 |
spring xml을 java config로 설정하기 (0) | 2017.08.16 |