본문 바로가기

Spring25

Proxy Pattern ( Delegate Pattern 에서의 '위임' 과의 차이 ) Proxy Pattern  정의: 프록시 패턴(Proxy Pattern)은 다른 객체에 대한 접근을 제어하기 위해 그 객체의 대리자 또는 대리 객체를 제공하는 디자인 패턴입니다. 프록시 객체는 타겟 객체를 대신하여 클라이언트와 상호작용하며, 타겟 객체에 대한 접근을 제어하거나 추가 작업을 수행할 수 있습니다.목적: 원래 객체에 대한 접근을 제어하거나, 원래 객체와의 상호작용 전에 추가적인 작업(로깅, 접근 제어, 캐싱 등)을 수행할 수 있도록 하는 것.예시:A는 클라이언트 클래스(Client).B는 실제 작업을 수행하는 타겟 클래스(Target).C는 프록시 클래스(Proxy)로, 클라이언트의 요청을 타겟 클래스에 전달하고, 타겟 클래스의 메서드 실행을 제어합니다.// Bpublic interface S.. 2024. 8. 28.
Delegate Pattern (위임 패턴) "Delegate"라는 개념은 다양한 프로그래밍 언어와 프레임워크에서 사용되며, 메서드 호출을 다른 객체나 메서드로 위임하는 패턴을 의미합니다. Java에서의 위임(delegate)은 특정 인터페이스의 메서드를 직접 구현하지 않고, 그 구현을 다른 객체에 위임(delegate)하는 방식으로 구현할 수 있습니다. 이를 통해 코드 재사용성과 유연성을 높일 수 있습니다. Delegate Patterndelegate는 '위임하다' 라는 사전적 의미즉, 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 디자인 패턴객체 간의 결합도를 낮춰서 유지보수성과 확장성을 높이는데 사용됨예시 : A는 B의 기능을 사용하고 싶을 때, A가 B의 기능을 직접 구현하지 않고, C에게 위임(delegate)하여 구현하는 .. 2024. 8. 28.
[ AOP 포인트컷 ] 클래스 필터(ClassFilter)와 메서드 매처(MethodMatcher) 클래스 필터(ClassFilter)와 메서드 매처(MethodMatcher)는 AOP(Aspect-Oriented Programming)에서 포인트컷(Pointcut)을 정의할 때 사용하는 중요한 개념입니다. 이들은 포인트컷이 어떤 클래스나 메서드에서 적용될지를 결정하는 데 사용됩니다. 클래스 필터 (ClassFilter)ClassFilter는 AOP 포인트컷에서 특정 클래스 집합을 대상으로 필터링하는 역할을 합니다. 즉, 어떤 클래스가 포인트컷의 대상이 될지 여부를 결정합니다.인터페이스 정의:public interface ClassFilter { boolean matches(Class clazz);}matches(Class clazz): 이 메서드는 주어진 클래스가 포인트컷의 대상이 될지 여부를 .. 2024. 8. 27.
FactoryBean과 ProxyFactoryBean FactoryBean과 ProxyFactoryBean은 모두 Spring 프레임워크에서 사용되는 개념이지만, 각각의 역할과 목적이 다릅니다. 1. FactoryBean정의: FactoryBean은 Spring에서 사용되는 특수한 빈으로, 특정 객체를 생성하는 데 사용됩니다. 이 객체는 단순한 객체 생성뿐만 아니라, 복잡한 객체 생성 로직이 필요할 때 주로 사용됩니다.목적: FactoryBean은 개발자가 복잡한 초기화나 객체 생성 로직을 캡슐화할 수 있도록 도와줍니다. FactoryBean을 사용하면, 실제 빈 대신에 FactoryBean이 관리하는 객체를 Spring 컨테이너에서 사용할 수 있습니다.작동 방식:FactoryBean 인터페이스를 구현한 클래스는 getObject() 메서드를 통해 Spri.. 2024. 8. 26.
Aspect 와 Aspect J 의 차이 Aspect와 AspectJ는 둘 다 애스펙트 지향 프로그래밍(AOP)과 관련이 있지만, 각각의 개념과 역할은 다릅니다. 다음은 이 두 가지의 차이점과 관련된 설명입니다.1. Aspect개념: Aspect는 애스펙트 지향 프로그래밍(AOP)의 핵심 개념 중 하나로, 횡단 관심사(cross-cutting concern)를 모듈화한 것입니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 검증 같은 기능들은 애플리케이션 전반에 걸쳐 여러 곳에서 필요할 수 있는데, 이러한 공통 기능을 Aspect로 캡슐화하여 관리할 수 있습니다.정의: Aspect는 AOP의 일부로서, Advice(적용할 코드)와 Pointcut(적용할 위치)를 포함합니다. Aspect는 코드베이스의 특정 시점이나 위치에서 자동으로 실행되도록 정의.. 2024. 8. 23.
AOP(Aspect-Oriented Programming)의 중요한 세 가지 기술 AOP(Aspect-Oriented Programming)의 세 가지 주요 기술인 다이나믹 프록시, CGLib, 그리고 AspectJ 1. 다이나믹 프록시 (Dynamic Proxy)개념:다이나믹 프록시는 자바 표준 라이브러리에서 제공하는 java.lang.reflect.Proxy 클래스를 이용하여 인터페이스 기반의 프록시 객체를 런타임에 동적으로 생성하는 기술입니다. 이 프록시 객체는 실제 객체의 대리자 역할을 하며, 메서드 호출을 가로채서 특정 로직(예: 로깅, 트랜잭션 관리 등)을 추가할 수 있습니다.동작 방식:인터페이스 필요: 다이나믹 프록시는 반드시 인터페이스를 기반으로 동작합니다. 즉, 프록시 객체를 생성하려면 원본 클래스가 구현한 인터페이스가 있어야 합니다.InvocationHandler: .. 2024. 8. 19.