728x90
반응형
21. 스프링에서 AOP가 뭔가요?
어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하는 관점 지향 프로그램입니다.
소스 코드상에서 다른 부분에 계속해서 쓰는 코드를 흩어진 관심사라 부릅니다.
흩어진 관심사를 Aspect로 모듈 화하고 핵시적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지입니다.
개념
Aspect
- 흩어진 관심사를 모듈화 한 것으로 주로 부가 기능을 모듈화함
Target
- Aspect를 적용하는 곳으로 클래스, 메서드 등을 말함
Advice
- 실질적으로 어떤 일을 해야 할 지에 대한 것으로 실질적인 부가기능을 담은 구현체
Join Point
- Advice가 적용될 위치 혹은 끼어들 수 있는 시점, 메서드 진입 시점, 생성자 호출 시점, 필드에서 꺼내올 시점 등 끼어들 시점을 의미
- 스프링에서는 언제나 메서드 실행 시점을 의미
Point Cut
- Join Point의 상세한 스펙을 정의한 것
- 구체적으로 Advice가 실행될 시점을 정함
장점
- 높은 재사용성
- 중복된 코드를 최대한 제외하여 기능이 필요할 때만 호출하여 쓰기 때문에 재사용성이 높습니다.
- 깔끔한 코드
- 공통관심사항을 별도로 분리하여 관리하기 때문에 깔끔합니다.
적용 방법
- 컴파일 타임
- 컴파일 시점에 바이트 코드를 조작하여 AOP가 적용된 바이트 코드를 생성하는 방법
- 로드 타임
- 순수하게 컴파일 한 뒤 클래스를 로딩하는 시점에 클래스 정보를 변경하는 방법
- 런타임 적용
- 스프링 AOP가 주로 사용하는 방법
- A라는 클래스 타입의 Bean을 만들 때 A타입의 Proxy Bean을 만들어 Proxy Bean이 Aspect 코드를 추가하여 동작하는 방법
스프링 AOP
- 스프링에서 제공하는 스프링 AOP는 프록시 기반의 AOP 구현체
- 프록시 객체를 사용하는 것은 접근 제어 및 부가 기능을 추가하기 위함
- 스프링 AOP는 스프링 Bean에만 적용 가능
- 모든 AOP 기능을 제공하는 것이 목적이 아닌 중복 코드, 프록시 클래스 작성의 번거로움 등 흔한 문제를 해결하기 위한 설루션 제공 목적
- 스프링 AOP는 순수 자바로 구현되어 특별한 컴파일 과정 불필요
728x90
반응형
'백수 > java' 카테고리의 다른 글
23. MVC1이랑 MVC2의 패턴 차이에 대해 설명해주세요. (0) | 2023.08.23 |
---|---|
22. 스프링 DI에 대해 아는 대로 말씀해 주세요. (0) | 2023.08.23 |
20. 스프링의 MVC에 대해 설명하세요 (0) | 2023.08.16 |
19. 다형성에 대해서 설명해 보세요. (0) | 2023.08.14 |
18. interface랑 abstract를 비교해서 설명해 주세요. (0) | 2023.08.14 |