Free Lines Arrow
본문 바로가기
728x90

Spring/Spring 고급5

[Spring] Spring AOP 개념 Spring AOP Spring AOP 는 스프링에서 사용하는 AOP 방식이다. 개념과 어떻게 사용 하는지 파악해보자. Spring AOP Proxy AOP를 적용하기 위해선 프록시가 필요하다. 스프링은 CGLIB 프록시를 사용한다. Spring AOP 용어 용어를 바로 설명하기 전에 예제를 한번 보자 아래 처럼 OrderService가 있고 그안에 save, cancel 메소드가 있다고 해보자. 사용자가 주문을 취소 했을때 cancel 이 몇번 되었는지 로그를 쌓고 싶다고 가정해보자. Advice 우리는 먼저 로그를 저장하는 부가 기능을 구현을 해야 한다. 아래처럼 Log 를 저장하는 기능을 Advice 라고한다. PointCut 그럼 저 어디바이스를 어떻게 지정을 할까? 우리는 Pointcut 으로 .. 2023. 6. 27.
[Spring] AOP 개념 AOP(Aspect Oriented Programming) 말그대로 관점 지향 프로그래밍이다. 관점 지향: 횡단 관심사의 분리를 허용하는 프로그램밍 횡단 관심사: 시스템의 수많은 다른 부분에 의존하거나 영향을 미쳐야 하는 프로그램의 일부분이다 간단하게 정리를 한다면 시스템의 수많은 부분에 의존하거나 영향을 미치는 프로그램을 분리 하는 것이다. AOP 예제 횡단 관심사 A, B, C 서비스가 있고 각 서비스는 서비스에 맞는 비즈니스 로직을 가지고 있다. 하지만 로그 찍는 로직이 동일하게 들어가 있다고 하자 로그를 찍는 print log 의 코드는 동일하다. pring log가 횡단 관심사가 되는 것이다. 그럼 AOP 맞게 구조를 바꿔 보자 횡단 관심사 분리 pring log 라는 기능을 따로 빼고 A, B.. 2023. 6. 15.
[Spring] CGLIB CGLIB(code generator library) 바이트 코드를 조작해서 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리 jdk와 달리 인터페이스가 필요없다. CGLIB 예제 CGLIB 은 MethodInterceptor를 제공한다. package org.springframework.cglib.proxy; public interface MethodInterceptor extends Callback { Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable; } obj : CGLIB이 적용된 객체 method: 호출된 메소드 args: 메서드를 호출하면서 전달된 인수 proxy: 메서.. 2023. 4. 18.
[Spring] JDK Proxy JDK Proxy 인터페이스 기반으로 프록시를 동적으로 만든다. 즉 인터페이스가 있어야 프록시를 만들수 있다. JDK Proxy 예제 JDK 동적 프록시를 만들기 위해서는 InvoctionHandler 를 구현해주면 된다. package java.lang.reflect; public interface InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; } proxy: 프록시 자신 method: 호출한 메소드 args: 메소드를 호출할때 전달한 인수 UserServiceInterface 앞서 말했듯이 JDK proxy 는 인터페이스가 필요하다. package com.examp.. 2023. 4. 18.
728x90
반응형