AOP3 @Transactional 동작원리 Build Up Spring Aop 2가지 방식 JDK Dynamic Proxy 동적으로 생성하는 전략으로 타겟의 Interface 기준으로 Proxy를 생성한다. Reflection 이 비싸다는 특징이 있다. CGLIB Proxy 스프링 부트가 기본적으로 제공하는 방식이다. 바이트 코드를 조작하여 프록시 객체를 생성한다. 인터페이스가 아닌 상속을 한 타켓을 호출하게 된다. 동작과정 @Transcational을 메소드 또는 클래스에 명시하게 되면 Spring AOP를 통해 타겟이 상속하고 있는 인터페이스 또는 타겟을 상속한 프록시 객체가 생성된다. SpringAop를 사용하고 있기 때문에 @Transactional을 사용하고 있는 클래스의 메소드를 호출 할 때 유념해야 한다. → @Transactiona.. Spring 2022. 12. 23. 트랜잭션 주의 1. Inner Method에서의 동작 public class BooksImpl implements Books { public void addBooks(List bookNames) { bookNames.forEach(bookName -> this.addBook(bookName)); } @Transactional public void addBook(String bookName) { Book book = new Book(bookName); bookRepository.save(book); book.setFlag(true); } } Q. 해당 코드가 있고 addBook을 호출하는 Controller는 잘 호출될까? A. 해당 코드에서 발생할 수 있는 문제는 @Transaction AOP가 적용되지 않는것이다. .. Spring/주위주위 2022. 12. 23. SpringFrameWork CoreTechnition_section5_12부 AOP AOP의 개념 Aspect-Oriented Programming의 약자이다. 흩어진 Aspect들을 모아서 모듈화 하는 기법이다. AOP는 OOP를 보완하는 수단이다.(대체하는 것이 아니고 OOP를 좀 더 잘하게 끔 하는 것이다) 여러가지의 구현체들이 존재하지만 AspectJ와 SpringAop가 대표적이다. 관심사란 => 비슷한 코드들을 의미한다. ex) 필드 또는 메소드 등과 같은 것들 이다. Transacion , Logging 사용. 각 클래스에 중복되는 부분이 있으면! 중복을 제거하기 위해 AOP를 적용하게 된다. class A,B,C 에 중복된 관심사들을 깔끔하게 정리한다. AOP 의 주용 개념(용어정리) Aspect와 target Aspect : 해야할 일(관심사)과 어디에(클래스A?.. Spring/Spring_CoreTechnologies 2020. 11. 24. 이전 1 다음