https://sundaland.tistory.com/206[ ▶ Delegate ]델리게이트 (Delegate)는 객체 지향 프로그래밍에서 특정 작업이나 책임을 다른 객체에 할당하는 디자인 패턴을 지칭하는데 자주 사용된다. 즉, 어떤 작업을 직접 처리하는 대신, 클래스나 메서드가 그 책임을 다른 객체에 위임하는 것이다.Delegated Object : 위임받은 객체는 실제로 작업을 수행하는 객체이다. 이 객체는 자신에게 위임된 기능을 처리할 책임이 있다.Delegating Object : 위임하는 객체는 작업을 수행하라는 요청을 받지만, 이를 직접 처리하는 대신 델리게이트 객체에 그 책임을 넘긴다. [ ▷ 스프링 AOP에서의 델리게이트 ]스프링 AOP 맥락에서 델리게이트는 특히 DelegatingInt..
스프링 AOP
https://sundaland.tistory.com/67[ ▶ Concise Proxy Definitions ]특히 트랜잭션 프록시를 정의할 때, 유사한 프록시 정의가 많이 생길 수 있다. 부모-자식 빈 정의와 내부 빈 정의를 사용하면 훨씬 깔끔하고 간결한 프록시 정의를 만들 수 있다.먼저, 프록시를 위한 부모 (탬플릿) 빈 정의를 생성한다. ▼ XML 기반 구성 PROPAGATION_REQUIRED ▼ 자바 기반 구성@Configurationpublic class AppConfig { @Bean public TransactionProxyFactoryBean txProxyTemplate(TransactionManager t..
https://sundaland.tistory.com/76[ ▶ The Advisor API in Spring ]스프링에서 어드바이저는 포인트컷 표현식과 연관된 단일 어드바이스 객체만을 포함하는 액스펙트 (관심사)이다.도입 (introductions)의 특별한 경우를 제외하고, 모든 어드바이저는 모든 어드바이스와 함께 사용할 수 있다. org.springframework.aop.support.DefaultPointcutAdvisor는 가장 일반적으로 사용되는 어드바이저 클래스이다. 이 클래스는 MethodInterceptor, BeforeAdvice 또는 ThrowsAdvice와 함께 사용할 수 있다.스프링에서는 동일한 AOP 프록시에서 어드바이저와 어드바이스 타입을 혼합할 수 있다. 예를 들어, 하나의..
https://sundaland.tistory.com/68[ ▶ Pointcut API in Spring ][ ▷ Concepts ]스프링의 포인트컷 모델을 advice 유형과 독립적으로 포인트컷을 재사용할 수 있게 해준다. 동일판 포인트 컷으로 다양한 어드바이스를 타겟팅할 수 있다.org.springframework.aop.Pointcut 인터페이스는 특정 클래스와 메서드를 타겟으로 어드바이스를 지정하기 위해 사용하는 핵심 인터페이스이다.public interface Pointcut { ClassFilter getClassFilter(); MethodMatcher getMethodMatcher();}Pointcut 인터페이스를 두 부분으로 나누면 클래스와 메서드 매칭 부분을 재사용하고, 세분..
https://sundaland.tistory.com/77 AOP (Aspect-Oriented Programming)는 프로그램 구조를 생각하는 또 다른 방법을 제공하여 OPP (Object-Oriented Programming)를 보안한다. OPP에서의 주요 모듈화 단위는 클래스인 반면, AOP에서 모듈화 단위가 aspect이다. aspect는 트랜잭션 관리와 같은 여러 타입과 객체에 걸쳐 있는 문제를 모듈화할 수 있게 해준다. 이러한 문제는 AOP 문헌에서 흔히 crosscutting concerns라고 불린다.스프링의 주요 구성 요소 중 하나는 AOP 프레임워크이다. 스프링 IoC 컨테이너는 AOP에 의존하지 않으므로 (AOP를 사용하지 않아도 된다는 의미) AOP를 꼭 사용해야 하는 것은 아니지..
https://sundaland.tistory.com/90[ ▶ Aspect Instantiation Models ]기본적으로 각 aspect는 애플리케이션 컨텍스트 내에서 단일 인스턴스를 가진다. AspectJ에서는 이를 싱글톤 인스턴스화 모델이라고 부른다. 하지만 다른 생명 주기를 가진 aspect를 정의한 것도 가능하다. 스프링은 AspectJ의 perthis, pertarget, pertypewithin 인스턴스화 모델을 지원하며, percflow 및 percflowbelow는 현재 지원하지 않는다.@Aspect 어노테이션에서 perthis 절을 지정하여 perthis aspect를 선언할 수 있다.@Aspect("perthis(execution(* com.xyz..service.*.*(..))..
https://sundaland.tistory.com/74 AOP Alliance 프로젝트는 목표, 철학, 제공해야 할 답변, 제공하지 말아야 할 것들에 대해 다룬다. AOP Alliance의 다른 구성원들과 논의를 통해 우리가 여기서 무엇을 하고 있는지에 대한 공통된 견해를 도출하기 위해 추가 논의가 필요한 초안 제안서이다. 또한 목록에서 논의 중에 흥미로운 점이 나오면 이 문서에 추가되어야 한다. [ ▶ AOP Alliance goals ][ ▷ AOP Advantages: The J2EE Case ]애스펙트 지향 프로그래밍 (AOP)은 애플리케이션을 셀계하고 프로그랭하는데 있어 훌륭한 방법이다. AOP는 기존 기술 (EJB 등)이 제공하는 것보다 더 나은 해결책을 제시한다.J2EE는 AOP Alli..