티스토리 뷰

Spring-Boot

spring boot Transaction(@Transactional)

SonSeungWoo 2018. 1. 15. 17:09

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
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함