spring @Transactional aop 구현해보기

말이 거창하지 실제 Transactional 을 구현하는건 아니다. @Transactional 대충 어떻게 동작하는지 알아보기 위해 aop 를 구현하는 것이다. 실질적으로 Transactional을 구현하는건 아니다. Transaction이라는 어노테이션이 달린 메서드는 aop 를 동작한다고 해보겠다. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @Inherited @Documented public @interface Transaction { } 그리고나서 AOP 동작을 위해 MethodInterceptor 구현해야된다. 실제 여기서 트랜잭션 시작과 끝을 구현하면된다. public class TransactionInterceptor implements MethodInterceptor { @Override public Object invoke(MethodInvocation invocation) throws Throwable { System.out.println(“Transaction start”); Object proceed = invocation.proceed();.. Read More

slf4j 중복 binding, bridge

이번 포스팅은 log를 찍을때 중복으로 binding, bridge 가 있을 경우에 어떻게 되는지 테스트 해볼라고 한다. 저번 spring boot logging 에서 봤듯이 spring boot의 logger 동작 방식을 살펴봤었다. 물론 spring boot 기반으로 테스트 해본다. 설정하기도 귀찮아서… spring boot의 프로젝트를 생성 후에 메이븐을 추가하자. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency> spring boot 로그 설정을 log4j로 하면 log4j binding 가 생기고 jcl과 jul 은 bridge라이브러리가.. Read More