분류 전체보기591 포인트컷, 어드바이스, 어드바이저 포인트컷(pointcut) : 부가 기능을 어디에 적용할지, 어디에 적용하지 않을지 판단하는 필터링 로직. 주로 클래스와 메서드 이름으로 필터링을 한다. 어드바이스(advice) : 프록시가 호출하는 부가 기능, 프록시 로직으로 생각하면 된다. 어드바이저(advisor) : 단순하게 하나의 포인트컷과 하나의 어드바이스를 가지고 있는 것, 어드바이저 = 포인트컷1+어드바이스1 ※ 중요 : 스프링은 AOP를 적용할 때, 최적화를 진행해서 프록시 객체는 하나만 만들고, 하나의 프록시에 여러 어드바이저를 적용한다. 즉, 하나의 target에 여러 AOP가 동시에 적용되어도 스프링 AOP는 target마다 하나의 프록시만 생성한다. public class AdvisorTest { @Test void advisor.. 2022. 10. 13. java spring 문자열 포함 여부 체크 라이브러리 (PatternMatchUtils) 아래와 같이 라이브러리 활용해서 손쉽게 문자열 포함 여부 비교 할 수 있다. * 기호를 활용해서 4가지 케이스의 문자열 체크 가능 함 1. XXX : 완전 일치하는 경우 2. XXX* : XXX로 시작하는 문자 3. *XXX : XXX로 끝나는 문자 4. *XXX* : XXX가 포함된 문자 PatternMatchUtils.simpleMatch(찾을 문자열 패턴 배열, 비교 문자열) private static final String[] PATTERNS = {"request*", "order*", "save*"}; if(!PatternMatchUtils.simpleMatch(patterns, methodName)){ return method.invoke(target, args); } 2022. 10. 11. jdk 동적 프록시, 리플렉션(reflection), CGLIB JDK 동적 프록시와 CGLIB(Code Generate Library) 차이 - CGLIB는 바이트코드를 조작해서 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리 - 인터페이스가 있어야만 사용할 수 있는 JDK 동적 프록시와 달리 CGLIB를 사용하면 구체 클래스만 가지고도 동적 프록시를 만들어낼 수 있다. - CGLIB는 외부 라이브러리인데, 스프링 프레임워크가 스프링 내부 소스 코드에 포함하여 별도의 외부 라이브러리를 추가하지 않아도 사용할 수 있다. 리플렉션(reflection) JDK 동적 프록시를 이해하기 위해서는 먼저 자바의 리플렉션 기술을 이해해야 한다. 리플렉션 기술을 사용하면 클래스나 메서드의 메타정보를 동적으로 획득하고, 코드를 동적으로 호출할 수 있다. 일반적인 경우, 대부분의.. 2022. 10. 10. 프록시, 데코레이터 패턴 프록시 패턴과 데코레이터 패턴 모두 프록시를 사용하는 방법이지만 GOF 디자인 패턴에서는 이 둘을 의도에 따라서 프록시 패턴과 데코레이터 패턴으로 구분한다. - 프록시 패턴 : 접근 제어가 목적일 때 - 데코레이터 패턴 : 새로운 기능 추가가 목적일 때 프록시의 주요 기능 프록시를 통해서 할 수 있는 일은 크게 2가지로 구분할 수 있다. 접근 제어 권한에 따른 접근 차단 캐싱 지연로딩 부가 기능 추가 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행한다. ex : 요청 값이나, 응답 값을 중간에서 변경하거나 ex : 실행 시간을 측정해서 추가 로그를 남기거나 프록시 패턴 코드 정리 : 프록시 패턴의 핵심은 RealSubject 코드와 클라이언트 코드를 전혀 변경하지 않고, 프록시를 도입해서 접근 제어.. 2022. 10. 9. 이전 1 ··· 61 62 63 64 65 66 67 ··· 148 다음