동적프록시 3

[Spring AOP] 2.ProxyFactory로 대상에 따른 기술에 구애받지 않고 Proxy 생성,적용하기 (Advisor, Advice, PointCut)

해당 내용에 대한 이해를 위해 사전 지식을 원한다면 링크를 참고해주세요. 참고글 : https://nomoreft.tistory.com/107 ProxyFactory, Advice, Pointcut 개발자는 ProxyFactory로 Interface인지, Class인지 구분하지 않고, Advice를 등록하면 된다. ProxyFactory는 Interface가 있으면 JDK Proxy를 생성하고, 없으면 CGLIB를 생성해서 Client에게 제공한다. ProxyFactory로 생성된 Proxy는 Advice를 호출한다. 그래서 사용자는 Proxy의 종류에 구애받지 않고 Advice로 공통기능을 작성하면 된다. 특정 메서드 패턴만 작동한다던지 동작에 조건을 걸때는 PointCut을 사용하면 된다. Point..

스프링 2022.11.16

[Spring AOP] 1.JDK Dynamic Proxy/CGLIB로 인터페이스 or 클래스 기반의 프록시 객체를 쉽게 생성하는 방법

JDK Dynamic Proxy JDK Dynamic Proxy란? JDK에서 제공하는 Dynamic Proxy 기능을 사용하면 인터페이스 기반의 프록시 객체를 쉽게 생성할 수 있다. JDK Dynamic Proxy는 인터페이스를 구현한 클래스의 객체를 생성할 때 사용한다.(인터페이스가 필수) JDK Dynamic Proxy는 InvocationHandler 인터페이스를 구현한 클래스의 객체를 생성자 파라미터로 넘겨주면 된다. JDK Dynamic Proxy는 인터페이스의 모든 메서드를 구현한 프록시 객체를 생성한다. JDK Dynamic Proxy 예제 공통 기능을 가진 Proxy를 구현 @Slf4j public class TimeInvocationHandler implements InvocationH..

개발언어/JAVA 2022.11.16

[Reflection] 자바가 동적으로 Class, Method의 메타데이터를 획득하여 작동시키는 방법

동적 프록시 프록시를 동작을 원하는 개수만큼 생성해놓는게 아니라, 동적으로 객체를 만들 수 있다. 프록시를 적용할 코드를 하나 만들고, 동적 프록시 기술로 원하는 만큼 찍어내면 된다. 그러기 위해서는 기본적으로 자바가 어떤 클래스, 어떤 메서드던지 획득, 작동을 시킬 수 있어야 한다. 그래서 자바에서는 Reflection API를 제공한다. Reflection API 대표적으로 package명으로 Class를 가져오고, 이름으로 해당 Class의 Method명을 가져오면 된다. 개인적으로는 해당 Class의 Method를 전부 가져와서 Enum으로 메서드명을 value로 가져와서 일치하면 실행시키는 식으로 개발했었다. 예시 @Slf4j public class ReflectionTest { /** * Re..

개발언어/JAVA 2022.11.16
1