aop
-
스프링 AOP: @AOPSPRING/스프링프레임워크 핵심개념 2021. 5. 29. 17:12
Spring AOP를 시작하기 위해서는 아래와 같이 의존성을 추가해야 한다. org.spring.framwork.boot spring-boot-starter-aop @Aspect을 통해 Aspect로 정의하고 Component 등록을 한다. @Component @Aspect public class PerfAspect { // 1. com.springaop로 시작하는 패키지의 EventService 클래스의 모든 메서드에 적용 //@Around("execution(* com.springaop..*.EventService.*(..))") // 2. 아래 PerfLogging 어노테이션이 적용된 곳만 적용 @Around("@annotation(PerfLogging)") // 3. 해당 Bean의 모든 메서드에..
-
Spring AOP: 프록시 기반 AOPSPRING/스프링프레임워크 핵심개념 2021. 5. 29. 15:46
스프링 AOP 특징 - 프록시 기반의 AOP 구현체 - 스프링 빈에만 AOP를 적용할 수 있음. - 모든 AOP 기능을 제공하는 것이 목적이 아니라, 스프링 IOC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제에 대한 해결책을 제공하는 것이 목적임. 프록시 패턴 Proxy 패턴은 위와 같이 Interface가 있고, Client는 Interface Type으로 Proxy 객체를 사용한다. Proxy객체는 또한 Real Subject(target) 객체를 참조하고 있다. 아래 코드는 Proxy 패턴의 예제이다. // Client 역할 @Component public class AppRunner implements ApplicationRunner { @Autowired EventService eve..
-
스프링 AOP : 개념SPRING/스프링프레임워크 핵심개념 2021. 5. 29. 01:14
AOP : Aspect-oriented Programming (AOP)은 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈활 할 수 있는 프로그래밍 기법 흩어진 관심사 (Crosscutting Concerns) 위 그림에서 같은 색깔의 영역들은 여러 클래스에서 공통적으로 사용하는 로직들이다. AOP는 주로 Logging이나 Transaction에 사용이 되는데 Logging할 때 AOP가 필요한 이유는 다음과 같다. 메서드가 실행되는 시간을 재는 로그를 쌓고자 할때, class A,B,C 각각에 시간을 재는 코드를 추가해야 한다. 이러한 경우에는 각각의 클래스에 있는 시간을 재는 로직을 수정해야 하기 때문에 유지보수가 어렵다. 그렇기 때문에 AOP를 이용하여 해결한다. Aspect X, Y, Z 각..
-
AOP (Aspect Oriented Programming) (자료: 백기선)SPRING 2020. 3. 23. 23:51
AOP(Aspect Oriented Programming) AOP은 공통 된 기능(아래 AAAA, BBBB)을 메소드 실행시 수행하게 만드는 기법. 즉, AAAA, BBBB 와 같은 코드를 공통으로 관리하기 때문에, 소스관리에 편리하다. AOP 주요 개념 - Aspect : 위에서 설명한 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화함. - Target : Aspect를 적용하는 곳 (클래스, 메서드) - Advice : 실질적으로 어떤 일을 해야할 지에 대한 것, 실질적인 부가기능을 담은 구현체 - JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용가능 - PointCut : Joi..