본문 바로가기

Spring Study22

어노테이션 기반의 Spring 컨테이너 구성 어노테이션 기반의 Spring 컨테이너 구성 Spring Framework의 @Autowired 어노테이션 1. @Autowired 어노테이션의 개요@Autowired 어노테이션은 Spring에서 의존성 주입(Dependency Injection)을 처리하는 중요한 도구입니다. 이 어노테이션은 필드, 메서드, 생성자에 붙여 사용되며, Spring 컨테이너가 관리하는 빈(bean) 중에서 해당 타입의 빈을 자동으로 주입하게 됩니다. 2. @Autowired 어노테이션 사용 예시2.1. 생성자 주입(Constructor Injection)@Componentpublic class MovieRecommender { private final CustomerPreferenceDao customerPrefere.. 2024. 9. 4.
Java Instrument API vs ASM(Abstract Syntax Manipulation) Java Instrumentation API와 ASM은 모두 Java 바이트코드 조작을 가능하게 하는 도구이지만, 그 목적과 사용 방식이 다릅니다. 이 둘은 서로 보완적으로 사용될 수 있으며, Instrumentation API는 ASM과 같은 라이브러리와 함께 사용되어 바이트코드를 런타임에 조작할 수 있습니다.Java Instrumentation API주요 목적: Instrumentation API는 Java 애플리케이션에서 런타임 시 클래스의 바이트코드를 조작할 수 있는 기능을 제공합니다. 주로 Java Agent를 통해 사용되며, JVM에서 클래스가 로드되기 전이나 이미 로드된 후에 바이트코드를 수정할 수 있습니다.역할:Instrumentation API는 클래스 로딩 과정에 개입할 수 있는 메커니.. 2024. 9. 3.
Mixin Pattern (자바에선 다중상속 허용X -> 믹스인디자인패턴으로 흉내) 믹스인(Mixin) 디자인 패턴은 여러 클래스로부터 코드를 재사용할 수 있도록 하는 패턴으로, 클래스가 여러 다른 클래스로부터 기능을 "혼합"할 수 있게 해줍니다. 이 패턴은 다중 상속의 일부 개념을 차용하되, 일반적인 상속보다는 더 유연하고, 주로 인터페이스와 조합하여 사용됩니다. 믹스인 패턴의 특징재사용성: 공통 기능을 여러 클래스에 쉽게 재사용할 수 있습니다.유연성: 상속 계층 구조와는 독립적으로 기능을 추가할 수 있습니다. 즉, 특정 기능을 추가하기 위해 클래스를 상속할 필요가 없습니다.다중 상속의 대안: 자바는 다중 상속을 지원하지 않지만, 믹스인 패턴을 사용하면 다중 상속과 유사한 효과를 얻을 수 있습니다. 믹스인 패턴의 활용 방법 자바에서는 믹스인 패턴을 인터페이스와 디폴트 메서드 또는 조합.. 2024. 8. 28.
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.