전체 글

·스프링 AOP
https://sundaland.tistory.com/87[ ▶ @AspectJ ] @AspectJ는 어노테이션을 사용하여 일반적인 자바 클래스로 어드바이스를 선언하는 스타일을 의미한다.  @AspectJ 스타일은 AspectJ 5 릴리스의 일환으로 AspectJ 프로젝트에서 도입되었다. 스프링은 포인트컷을 해석하고 매칭 (연결)하기 위해 AspectJ에서 제공하는 라이브러리를 사용하여 동일한 어노테이션을 AspectJ 5처럼 해석한다. 그러나 AOP 런타임은 여전히 순수한 스프링 AOP로 동작하여, AspectJ 컴파일러나 위버 (weaver)에 대한 의존성은 없다. AspectJ 컴파일러와 위버를 사용하면 전체 AspectJ 언어를 사용할 수 있다. @ AspectJ라는 어노테이션은 스프링이나 Asp..
·스프링 AOP
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/79 Mockito는 자바에서 사용되는 인기 있는 모의 (Mocking) 프레임 워크이다. Mockito를 사용하면 테스트 중에 가 (Mock) 객체를 생성하고, 그 객체의 동작을 설정하고, 동작을 검증할 수 있다.Mockito는 테스트 코드 작성을 더욱 쉽고 유연하게 만들어즈는 강력한 도구이다. 1. Mockito 설정Mockito 라이브러리를 프로젝트에 추가해야 한다. 일반적으로 Maven, Gradle과 같은 의존성 관리 도구를 사용하여 아래와 같이 의존성을 추가할 수 있다. org.mockito mockito-core 5.2.0 test2. 목 (Mock) 객체 생성@Mock 어노테이션을 사용하거나 Mockito.mock(..
·스프링 AOP
https://sundaland.tistory.com/76[ ▶ The Advisor API in Spring ]스프링에서 어드바이저는 포인트컷 표현식과 연관된 단일 어드바이스 객체만을 포함하는 액스펙트 (관심사)이다.도입 (introductions)의 특별한 경우를 제외하고, 모든 어드바이저는 모든 어드바이스와 함께 사용할 수 있다. org.springframework.aop.support.DefaultPointcutAdvisor는 가장 일반적으로 사용되는 어드바이저 클래스이다. 이 클래스는 MethodInterceptor, BeforeAdvice 또는 ThrowsAdvice와 함께 사용할 수 있다.스프링에서는 동일한 AOP 프록시에서 어드바이저와 어드바이스 타입을 혼합할 수 있다. 예를 들어, 하나의..
·스프링 AOP
https://sundaland.tistory.com/68[ ▶ Pointcut API in Spring ][ ▷ Concepts ]스프링의 포인트컷 모델을 advice 유형과 독립적으로 포인트컷을 재사용할 수 있게 해준다. 동일판 포인트 컷으로 다양한 어드바이스를 타겟팅할 수 있다.org.springframework.aop.Pointcut 인터페이스는 특정 클래스와 메서드를 타겟으로 어드바이스를 지정하기 위해 사용하는 핵심 인터페이스이다.public interface Pointcut { ClassFilter getClassFilter(); MethodMatcher getMethodMatcher();}Pointcut 인터페이스를 두 부분으로 나누면 클래스와 메서드 매칭 부분을 재사용하고, 세분..
·스프링 AOP
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를 꼭 사용해야 하는 것은 아니지..
·스프링 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.*.*(..))..
GLaDiDos
GLaDiDos의 티스토리