Spring/AOP6 스프링 AOP 주의점2 - 프라이빗 프라이빗에서는 적용이안됨 CGILB는 오버라이딩방식을 사용해서 프록시만드는데 프라이빗은 오버라이딩 불가JDK동적프록시는 인터페이스방식을 사용하는데 프라이빗은 인터페이스정의불가 final도 마찬가지다 2026. 1. 23. 스프링 AOP 주의점1 - 내부 호출과 대안 내부호출AOP 적용하려면 프록시를 통해서 대상 객체를 호출해야함프록시에서 먼저 어드바이스를 호출하고 이후에 대상 객체 호출프록시 안거치고 대상 객체 직접호출하면 AOP 적용 X 스프링에서는 AOP대상은 프록시를 스프링빈으로 등록해서 직접 호출은 거의 안일어남근데 대상 객체 내부에서 메서드 호출 발생하면 프록시를 안거치고 대상 객체 직접 호출하게 됨그러니까 프록시가 타겟의 메서드 호출하면 그 타겟이 타겟안에 있는 메서드호출하면 적용이안됨 자바에서 메서드 앞에 별도의 참조가 없으면 this로 자기자신의 인스턴스를 가리킴결과적으로 자신의 내부 메서드를 호출하게 되는데 여기서 this는 실제 대상 객체의 인스턴스라 AOP가 적용이안되는 것 대안1 자기자신 주입this가 아니라 자기자신을 주입해서 다시 프록시로 .. 2026. 1. 23. 빈 후처리기와 스프링이 프록시를 등록하는 방법 스프링은 보통 빈이나 컴포넌트스캔으로 대상 객체를 스프링 컨테이너 내부의 빈 저장소에 등록함근데 객체를 빈 저장소에 등록하기 직전에 객체를 조작하고싶으면 빈후처리기 사용 빈을 생성한 이후 무언가 처리하는 용도로 사용 객체 생성이후 @PostConstruct같은 초기화가 발생하기 이전이냐 이후냐에 따라 조절가능스프링은 빈 후처리기를 통해 프록시를 생성함 스프링AOP는 포인트 컷을 사용해서 프록시 적용 대상 여부를 체크포인트컷은 결과적으로 두 곳에 사용됨1. 프록시 적용 대상 여부를 체크해서 필요한 곳에만 프록시 적용 (빈 후처리기 - 자동 프록시 생성)2. 프록시의 어떤 메서드가 호출 되었을 때 어드바이스를 적용할지 판단 (프록시 내부) aop를 빌드글레이들에 등록하면 자동프록시생성기가 빈으로 등록됨자동으.. 2026. 1. 23. Aspect 부가기능과 부가 기능을 어디에 적용할지 선택하는 기능을 합친 하나의 모듈이 에스펙트다어드바이저도 어드바이스오 포인트컷을 가지고 있어 개념상 하나의 에스팩트에스팩트는 관점이라는 뜻 횡단 관심사와 관련 애스팩트를 사용한 방식을 관점지향프로그래밍 AOP다AOP는 OOP를 대체하는게 아니라 OOP의 부족한 부분을 보조함 에스팩트J는 AOP의 구현으로 스프링도 AOP를 지원하지만 결국 대부분 에스팩트J의 문법을 쓰고 에스펙트J의 일부기능만 지원부가기능과 부가 기능을 어디에 적용할지 선택하는 기능을 합친 하나의 모듈이 에스펙트다어드바이저도 어드바이스오 포인트컷을 가지고 있어 개념상 하나의 에스팩트에스팩트는 관점이라는 뜻 횡단 관심사와 관련 애스팩트를 사용한 방식을 관점지향프로그래밍 AOP다AOP는 OOP를 대체하는.. 2026. 1. 23. 프록시팩토리 어드바이스는 프록시에 적용하는 부가기능 로직임 인터페이스가 있을땐 JDK동적프록시 없을땐 CGLIB를 사용하고싶으면 어떻게할까 JDK동적프록시의 invocationhandler나 CGLIB의 methodintercetor는 Advice를 호출한다프록시 팩토리를 사용하면 어드바이스를 호출하는 전용 invocationhandler, methodintercetor를 내부에서 사용 프록시 팩토리가 프록시를 만들때 JDK동적프록시면 어드바이스인보케이션핸들러를만들고 CGLIB면 어드바이스메서드엔터셉터를 만든다 우리는 어드바이스만 호출하면 됨 프록시 팩토리에서 프록시를 생성할때 타겟정보를 프록시팩토리로 넘겨버리기 때문에 다른 프록시들과 달리 타지정을할필요없다 proxyFactory.setProxyTarg.. 2026. 1. 23. 스프링 AOP 부가로직과 핵심기능의 분리를 위해여러곳에서 사용하는 부가로직 횡단 관심사가 됨변경 지점은 하나가 될 수 있도록 모듈화되어야 함 부가기능과 부가 기능을 어디에 적용할지 선택하는 기능을 합친 하나의 모듈이 에스펙트다어드바이저도 어드바이스오 포인트컷을 가지고 있어 개념상 하나의 에스팩트에스팩트는 관점이라는 뜻 횡단 관심사와 관련 애스팩트를 사용한 방식을 관점지향프로그래밍 AOP다AOP는 OOP를 대체하는게 아니라 OOP의 부족한 부분을 보조함 에스팩트J는 AOP의 구현으로 스프링도 AOP를 지원하지만 결국 대부분 에스팩트J의 문법을 쓰고 에스펙트J의 일부기능만 지원 횡단 관심사는 오류 검사 및 처리, 캐싱 모니터링, 로깅, 동기화 등 AOP 적용 방식은 3가지 있다1. 컴파일2. 클래스 로딩3. 런타임(프록.. 2025. 12. 13. 이전 1 다음