본문 바로가기
  • A little happiness

Spring34

섹션9. Aspect AOP @Aspect 어노테이션을 통해서 자동 프록시 생성기가 스프링 빈으로 등록된 어드바이저들을 찾고 빈들에 자동으로 프록시를 적용해준다. 프록시 생성기 작동 과정1. 생성 : 스프링 빈 대상이 되는 객체를 생성2. 전달 : 생성된 객체를 빈 저장소에 등록하기 직전에 빈 후처리기에 전달한다.3-1 Advisor 빈 조회 : 스프링 컨테이너에서 Advisor빈을 모두 조회한다.3-2 @Aspect Advisor 조회 : @Aspect 어드바이저 빌더 내부에 저장된 Advisor를 모두 조회한다.4. 프록시 적용 대상 체크 : 앞서 3-1, 3-2에서 조회한 Advisor에 포함되어 있는 포인트컷을 사용해서 해당 객체가 프록시를 적용할 대상인지 아닌지 판단한다. 이 때 객체의 클래스 정보는 물론이고, 해당 객.. 2025. 8. 18.
섹션 8. 빈 후처리기 스프링 빈 등록과정중 빈 후처리기에서 빈A대신 빈B를 등록하게 할 경우 스프링 빈 저장소에는 B가 저장되게 된다.-> 이 방식을 사용하여 빈 객체를 프록시로 교체하는 것도 가능하다.* 하나의 프록시에 여러개의 어드바이저가 등록된다. 2025. 8. 14.
섹션4. 템플릿 메서드 패션과 콜백 패턴 중복된 코드들을 동일하게 작성하는 문제를 해결하기 위해 두가지 디자인 패턴을 활용한다. - 템플릿 메서드 패턴템플릿 메서드 패 턴은 부모 클래스에 변하지 않는 템플릿 코드를 둔다. 그리고 변하는 부분은 자식 클래스에 두고 상속과 오버라이딩을 사용해서 처리한다.템플릿 메서드 패턴은 이렇게 다형성을 사용해서 변하는 부분과 변하지 않는 부분을 분리하는 방법이다 - 콜백 패턴전략 패턴은 변하지 않는 부분을 Context 라는 곳에 두고, 변하는 부분을 Strategy 라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결한다. 상속이 아니라 위임으로 문제를 해결하는 것이다. 전략 패턴에서 Context 는 변하지 않는 템플릿 역할을 하고, Strategy 는 변하는 알고리즘 역할을 한다. - 템.. 2025. 8. 13.
섹션7. 스프링이 지원하는 프록시 - 프록시 팩토리인터페이스가 있는 경우에는 JDK동적 프록시 적용, 그렇지 않은 경우에는 CGLIB를 적용하도록 동작하게된다. -> 개발자가 JDK 동적프록시를 사용할지, CGLIB을 사용할지 취사선택하지 않아도 됨InvocationHandler, MethodInterceptor는 Advice를 호출한다. - 포인트컷, 어드바이스, 어드바이저포인트컷 : 어디에 부가 기능을 적용할지 -> 실무에서는 aspectJ포인트 컷 사용어드바이스 : 프록시가 호출하는 부가기능어드바이저 : 하나의 포인트컷과 하나의 어드바이스를 동시에 갖고 있는 것 2025. 8. 13.
섹션6. 리플렉션 - 리플렉션리플랙션이란 클래스와 메소드를 추상화 할 수 있어 클래스와 메서드의 메타정보를 사용하여 어플리케이션을 유연하게 만들 수 있다. 하지만 리플랙션 기술은 런타임에 동작하기 때문에, 컴파일 시점에서 오류를 잡을 수 없다. - jdk 동적프록시동적 프록시 -> 프록시 객체를 동적으로 런타임에 개발자 대신에 만들어준다. 동적 프록시에 원하는 실행 로직을 지정할 수 있다.jdk 동적 프록시의 경우 인터페이스 기반으로 만들어준다. -> 런타임에 만들어주기 때문에 프록시를 사용할 때 매번 프록시 클래스를 작성해줄 필요 없이 인터페이스 하나만 사용하면 된다. -> SRP(single responsiblity principle) 하나의 클래스에 하나의 책임 원칙을 지킬 수 있다. - CGLIB바이트 코드를 조작.. 2025. 8. 13.
섹션5. 프록시 패턴, 데코레이터 패턴 정리 프록시 패턴 : 특정 객체의 기능이나 접근을 제어하기 위해 실체 보다는 proxy(대리자) 객체를 사용하여 처리하는 디자인 패턴, aop의 기본 기술이 됨 데코레이터 패턴 : 프록시 패턴에서 특정 기능을 추가하기 위한 디자인 패턴 기존 객체와 데코레이터들을 조합하여 기능 추가 2025. 8. 8.