
스프링은 AOP안에서 자기 자신의 메서드를 호출하면 AOP가 적용되지 않음. 정말 기본적인 상식?이지만 깜빡하는 경우가 있음. 외부에서 호출해야 해당 @Transactional이 존재하는 빈을 감싼 proxy bean이 호출되어 Transaction이 적용됨. 실제로 적용이 안되는 지 간단한 테스트를 해보자. import jpabook.jpashop.service.TestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Control..
JDK Dynamic Proxy & CGLIB Aspect 프레임워크와는 달리 스프링에서는 간단한 설정만으로 JDK Dynamic Proxy와 CGLIB 방식을 사용할 수 있도록 되어 있습니다. 두 방식의 차이는 인터페이스의 유무로서, AOP의 타깃이 되는 클래스가 인터페이스를 구현했다면 JDK Dynamic Proxy를 사용하고, 구현하지 않았다면 CGLIB 방식을 사용합니다. 기본적인 방침은 이러하나 사용자가 어떻게 설정하느냐에 따라서 인터페이스를 구현했다 하더라도 CGLIB방식을 강제하거나 AspectJ를 사용할 수 있습니다. * CGLIB방식을 사용: // proxy-targetclass="true"을 추가하여 CGLIB을 사용하도록 한다. proxy-target-class="true"로 주면 됨..

스프링은 지정된 클래스 이름을 가지고 리플렉션을 이용해서 해당 클래스의 오브젝트를 만듦. 클래스의 이름을 갖고 있다면 다음과 같은 방법으로 새로운 오브젝트를 생성할 수 있음. Date now = (Date) Class.forName("java.util.Date").newInstance(); 스프링은 내부적으로 리플렉션 API를 이용해서 빈 정의에 나오는 클래스 이름을 가지고 빈 오브젝트를 생성함. 그러나 다이나믹 프록시 오브젝트는 위와 같이 일반적인 스프링의 빈으로는 등록할 방법이 없음. 스프링은 클래스 정보를 가지고 디폴트 생성자를 통해 오브젝트를 만드는 방법 외에도 빈을 만들 수 있는 여러 가지 방법을 제공함. => 대표적으로 팩토리 빈을 이용한 생성 방법. 팩토리 빈을 만드는 방법에서 가장 간단한 ..
- Total
- Today
- Yesterday
- 프로그래머스
- a
- 코딩테스트 고득점 Kit
- 프로그래머스 Level 3
- 해시
- 프로그래머스 Level 1
- Filter
- 블로킹
- Handler Interceptor
- 비동기
- 프로그래머스 Level 2
- Asynchronous
- blocking
- 핸들러 인터셉터
- 논블로킹
- 동기
- 필터
- non-blocking
- 인터셉터
- Synchronous
- 스택/큐
- http://www.nextree.co.kr/p6960/
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |