Jinsu's Technical Blog
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (250)
      • Java (18)
      • Spring Framework (33)
        • Toby's Spring 3.1 (6)
        • Spring IoC (6)
        • TDD (6)
        • Reflection (6)
        • AOP (6)
      • Spring Boot (11)
      • Spring Security (22)
      • Database (17)
        • Mysql (2)
        • JDBC (2)
        • JPA (13)
      • Build and Development Tools (3)
        • Maven (1)
        • Gradle (1)
        • Lombok (1)
      • Network (12)
      • Apache Tomcat (11)
      • Microservices Architecture (33)
      • Linux (9)
      • React (10)
      • Docker (22)
      • OAuth (10)
      • DevOps (2)
      • Git (2)
      • HTML (1)
      • CSS (1)
      • JavaScript (1)
      • Problem and Solution Guide (8)
        • Java (1)
        • Spring Framework (4)
        • Reflection (1)
        • Dynamic Proxy (1)
        • JPA (1)
      • Note-Taking (23)
  • 홈
  • 태그
  • 방명록
Spring Framework

아규먼트 리졸버(Argument Resolver)

아규먼트 리졸버(Argument Resolver)는 Spring MVC에서 컨트롤러 메서드의 파라미터(Arguments)를 자동으로 해석하고 값을 주입하는 역할을 하는 기능입니다. 1. 아규먼트 리졸버란?Spring MVC에서 HandlerMethodArgumentResolver를 통해 구현된 메커니즘입니다. 컨트롤러 메서드의 파라미터 타입이나 어노테이션을 보고 적절한 값을 주입해줍니다. 스프링이 기본적으로 제공하는 리졸버들이 존재하며, 필요에 따라 커스텀 리졸버를 만들 수도 있습니다. 2. 기본 아규먼트 리졸버Spring MVC는 기본적으로 다음과 같은 아규먼트 리졸버를 제공합니다. 어노테이션/객체설명@RequestParam요청의 쿼리 파라미터 값을 가져와 메서드 인자에 주입합니다.@PathV..

2024. 12. 16. 23:55
Spring Framework

필터(Filter)와 인터셉터(Interceptor)

필터(Filter)와 인터셉터(Interceptor)는 웹 애플리케이션에서 요청과 응답을 처리할 때 사용되지만, 서로의 동작 시점과 기능이 다릅니다.이 두 개념은 주로 Spring 프레임워크나 Java EE 기반의 웹 애플리케이션에서 사용됩니다.✅ 필터(Filter)필터는 Servlet 스펙에서 제공하는 기능으로, 클라이언트 요청과 서버 응답의 흐름을 가로채고 변경하거나 처리할 수 있습니다.📌 특징서블릿 이전에 실행됨 필터는 서블릿(Controller)이 실행되기 직전에 요청을 가로채고 처리합니다. 요청 및 응답 수정 가능 요청(Request)과 응답(Response)의 데이터를 수정하거나 로깅하는 등 다양한 작업을 수행할 수 있습니다. 모든 요청에 대해 적용 필터는 주로 URL 패턴에 매핑되..

2024. 12. 16. 12:37
Spring Framework

InitializingBean

InitializingBean 인터페이스는 Spring 프레임워크에서 빈(Bean)이 초기화되는 시점에 추가 작업을 수행할 수 있도록 하는 인터페이스입니다. Spring의 빈 생명주기와 관련이 깊으며, 주로 리소스를 초기화하거나, 기본 설정을 적용하는 등의 용도로 사용됩니다. 1. InitializingBean이란? InitializingBean은 Spring 빈이 생성된 후, 빈이 모든 의존성을 주입받은 초기화 단계에서 호출될 수 있도록 하는 인터페이스입니다. InitializingBean을 구현하는 클래스는 afterPropertiesSet() 메서드를 필수로 구현해야 하며, 이 메서드 안에서 빈 초기화 시 수행할 작업을 정의할 수 있습니다. 주요 사용 목적  • 초기화 로직 구현: 빈이 생성되고 의..

2024. 10. 29. 23:39
Spring Framework/AOP

Spring AOP와 AspectJ를 활용한 다양한 Advice 유형과 적용 방법

Declaring Advice어드바이스는 포인트컷 표현식과 연관되어 있으며, 포인트컷에 의해 매칭된 메서드 실행 전, 후 또는 실행 중에 실행됩니다. 포인트컷 표현식은 인라인 포인트컷이거나 named pointcut을 참조할 수 있습니다.Before Advice@Before 애노테이션을 사용하여 어드바이스를 선언할 수 있습니다.다음 예제는 인라인 포인트컷 표현식을 사용한 예제입니다:import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class BeforeExample { @Before("execution(* com.xyz.dao.*.*(..))") public void d..

2024. 9. 2. 10:23
Spring Framework/AOP

Spring AOP의 @AspectJ 스타일과 포인트컷 구성 가이드

@AspectJ@AspectJ는 애노테이션을 사용하여 일반적인 자바 클래스로 어드바이스를 선언하는 스타일을 의미합니다. @AspectJ 스타일은 AspectJ 5 릴리스의 일환으로 AspectJ 프로젝트에서 도입되었습니다. Spring은 포인트컷을 해석하고 매칭[match:연결]하기 위해 AspectJ에서 제공하는 라이브러리를 사용하여 동일한 애노테이션을 AspectJ 5처럼 해석합니다. 그러나 AOP 런타임은 여전히 순수한 Spring AOP로 동작하며, AspectJ 컴파일러나 위버(weaver)에 대한 의존성은 없습니다.AspectJ 컴파일러와 위버를 사용하면 전체 AspectJ 언어를 사용할 수 있으며, 이에 대한 내용은 "Using AspectJ with Spring Applications"에서..

2024. 8. 29. 11:39
Spring Framework/AOP

Spring AOP APIs 3: 간결한 프록시 정의, ProxyFactory를 사용한 AOP 프록시 생성, Advised 객체 조작, 자동 프록시 기능 활용

Concise Proxy Definitions특히 트랜잭션 프록시를 정의할 때, 유사한 프록시 정의가 많이 생길 수 있습니다. 부모-자식 빈 정의와 내부 빈 정의를 사용하면 훨씬 깔끔하고 간결한 프록시 정의를 만들 수 있습니다.먼저, 다음과 같이 프록시를 위한 부모(템플릿) 빈 정의를 생성합니다:XML 기반 구성: PROPAGATION_REQUIRED 자바 기반 구성:@Configurationpublic class AppConfig { @Bean public TransactionProxyFactoryBean txProxyTemplate(TransactionManager transactionManager) { Tra..

2024. 8. 27. 16:04
Spring Framework/AOP

Spring AOP APIs 2: Advisor API 이해 및 ProxyFactoryBean을 활용한 AOP 프록시 생성

The Advisor API in SpringSpring에서 Advisor는 포인트컷 표현식과 연관된 단일 어드바이스 객체만을 포함하는 애스펙트입니다.도입(introductions)의 특별한 경우를 제외하고, 모든 어드바이저는 모든 어드바이스와 함께 사용할 수 있습니다. `org.springframework.aop.support.DefaultPointcutAdvisor`는 가장 일반적으로 사용되는 어드바이저 클래스입니다. 이 클래스는 `MethodInterceptor`, `BeforeAdvice`, 또는 `ThrowsAdvice`와 함께 사용할 수 있습니다.Spring에서는 동일한 AOP 프록시에서 어드바이저와 어드바이스 타입을 혼합할 수 있습니다. 예를 들어, 하나의 프록시 구성에서 인터셉션 aroun..

2024. 8. 27. 13:45
Spring Framework/AOP

Spring AOP의 고급 기능: Pointcut, Advice, Introduction의 이해와 적용

https://docs.spring.io/spring-framework/reference/core/aop-api.html Pointcut API in Spring이 섹션에서는 Spring이 중요한 포인트컷 개념을 어떻게 처리하는지 설명합니다.Concepts스프링의 포인트컷 모델은 advice 유형과 독립적으로 포인트컷을 재사용할 수 있게 해줍니다. 동일한 포인트컷으로 다양한 어드바이스를 타겟팅할 수 있습니다.org.springframework.aop.Pointcut 인터페이스는 특정 클래스와 메서드를 타겟으로 어드바이스를 지정하기 위해 사용하는 핵심 인터페이스입니다. 전체 인터페이스는 다음과 같습니다:public interface Pointcut { ClassFilter getClassFilter(..

2024. 8. 26. 17:08
Spring Framework/AOP

Spring AOP와 AspectJ를 활용한 모듈화 프로그래밍 이해하기

[공식문서]AOP(Aspect-Oriented Programming)는 프로그램 구조를 생각하는 또 다른 방법을 제공하여 OOP(Object-Oriented Programming)를 보완합니다. OOP에서의 주요 모듈화 단위는 클래스인 반면, AOP에서는 모듈화 단위가 aspect입니다. aspect는 트랜잭션 관리와 같은 여러 타입과 객체에 걸쳐 있는 문제를 모듈화할 수 있게 해줍니다. 이러한 문제는 AOP 문헌에서 흔히 crosscutting concerns라고 불립니다.Spring의 주요 구성 요소 중 하나는 AOP 프레임워크입니다. Spring IoC 컨테이너는 AOP에 의존하지 않으므로(AOP를 사용하지 않아도 된다는 의미) AOP를 꼭 사용해야 하는 것은 아니지만, AOP는 Spring IoC..

2024. 8. 26. 17:07
Spring Framework/Reflection

Java의 배열과 열거형: 리플렉션을 통한 심층 탐구

[튜토리얼] Lesson: Arrays and Enumerated TypesJava 가상 머신 관점에서 배열과 열거형(enums)은 단순히 클래스일 뿐입니다. Class의 많은 메서드를 이들에 사용할 수 있습니다. 리플렉션(Reflection)은 배열과 열거형을 위한 특정 API를 제공합니다. 이 강의에서는 일련의 코드 샘플을 통해 이러한 객체들을 다른 클래스와 구분하고, 이들에 대해 작업하는 방법을 설명합니다. 또한 다양한 오류도 다루게 됩니다. 배열(Arrays)배열은 컴포넌트 타입과 길이를 가지고 있으며, 길이는 타입의 일부가 아닙니다. 배열은 전체적으로 또는 컴포넌트별로 조작할 수 있습니다. 리플렉션은 후자의 목적을 위해 java.lang.reflect.Array 클래스를 제공합니다.배열 타입 식..

2024. 8. 22. 17:17
Spring Framework/Reflection

Java 동적 프록시 클래스 활용법

튜토리얼Introduction다이나믹 프록시 클래스는 런타임에, 지정된 인터페이스 목록을 구현하는 클래스입니다. 이러한 클래스의 인스턴스를 통해 인터페이스의 메서드를 호출하면 해당 호출이 인코딩되어 다른 객체로 전달됩니다.[structuring method calls]이 객체는 일관된 인터페이스를 통해 호출을 처리하게 됩니다. 따라서 다이나믹 프록시 클래스는 컴파일 타임 도구를 사용하지 않고도 인터페이스 목록에 대한 타입 안전한 프록시 객체를 생성하는 데 사용할 수 있습니다.[type-safe proxy object]다이나믹 프록시 클래스의 인스턴스에서 메서드가 호출되면, 이 호출은 해당 인스턴스의 Invocation Handler에 있는 단일 메서드[invoke]로 전달되며, 호출된 메서드를 식별하는 ..

2024. 8. 20. 12:33
Spring Framework/Reflection

리플렉션: 멤버 탐구 - 메서드(Methods)

[튜토리얼] Methods메서드에는 호출될 수 있는 실행 가능한 코드가 들어 있습니다. 메서드는 상속되고 넌-리플렉티브한 코드에서는 오버로딩, 오버라이딩, 하이딩[hiding]과 같은 동작이 컴파일러에 의해 적용됩니다. 반면, 리플렉티브한 코드는 슈퍼클래스를 고려하지 않고도 메서드 선택을 특정 클래스로 제한할 수 있습니다. 슈퍼클래스 메서드에 액세스할 수 있지만 메서드를 선언한 클래스를 확인할 수 있습니다. 이는 리플렉션 없이는 프로그래밍 방식으로 발견하는 것이 불가능하며 많은 미묘한 버그의 원인입니다. java.lang.reflect.Method 클래스는 메서드의 제어자, 리턴 타입, 파라미터, 어노테이션 및 throw된 예외에 대한 정보에 액세스하는 API를 제공합니다. 또한 메서드를 호출하는 데 사..

2024. 8. 19. 10:01
Spring Framework/Reflection

리플렉션: 멤버 탐구 - 생성자(Constructors)

[튜토리얼] Constructors생성자는 클래스의 인스턴스인 객체를 생성할 때 사용됩니다. 일반적으로 메서드가 호출되거나 필드에 접근되기 전에 클래스 초기화에 필요한 작업을 수행합니다. 생성자는 절대 상속되지 않습니다.메서드와 유사하게, 리플렉션은 클래스의 생성자를 발견하고 검색하며, 제어자, 파라미터, 애노테이션, 던지는 예외와 같은 선언 정보를 얻기 위한 API를 제공합니다. 또한 지정된 생성자를 사용하여 클래스의 새 인스턴스를 생성할 수도 있습니다. 생성자를 다룰 때 사용하는 주요 클래스는 Class 와 java.lang.reflect.Constructor 입니다. 생성자와 관련된 일반적인 작업은 다음 섹션에서 다룹니다:Finding Constructors 특정 파라미터를 가진 생성자를 검색하는 ..

2024. 8. 19. 10:00
Spring Framework/Reflection

리플렉션: 멤버 탐구 - 필드(Fields)

[튜토리얼] 리플렉션은 java.lang.reflect.Member 인터페이스를 정의하며, 이 인터페이스는 java.lang.reflect.Field, java.lang.reflect.Method, java.lang.reflect.Constructor에 의해 구현됩니다. 이 레슨에서는 이러한 객체들에 대해 논의할 것입니다. 각 멤버에 대해, 선언 및 타입 정보를 검색하는 관련 API, 멤버에 고유한 작업(예를 들어, 필드의 값을 설정하거나 메서드를 호출하는 것), 일반적으로 발생하는 오류를 설명할 것입니다. 각 개념은 일부 예상되는 리플렉션 용도와 유사한 코드 샘플 및 관련 출력과 함께 설명됩니다.참고: 자바 언어 사양(Java Language Specification), Java SE 7 에디션에 따르..

2024. 8. 19. 10:00
Spring Framework/Reflection

리플렉션 API: 클래스 탐구하기

[튜토리얼] Uses of Reflection리플렉션[Reflection]은 JVM(Java Virtual Machine)에서 실행되는 애플리케이션의 런타임 동작을 검사하거나 수정하는 기능이 필요한 프로그램에서 일반적으로 사용됩니다. 이는 비교적 고급 기능이므로 언어의 기본 사항을 잘 이해하고 있는 개발자만 사용해야 합니다. 이러한 주의 사항을 염두에 두고 리플렉션은 강력한 기술이며 응용 프로그램이 그렇지 않으면 불가능한 작업을 수행할 수 있도록 할 수 있습니다.리플렉션이란, 자바와 같은 프로그래밍 언어에서 프로그램이 런타임 시점에 자기 자신을 검사하고 수정할 수 있는 기능을 말합니다. 리플렉션을 통해 클래스, 메서드, 필드 등의 구조적 요소에 대한 정보를 동적으로 탐색하고 조작할 수 있습니다. 즉, 프..

2024. 8. 19. 09:59
  • «
  • 1
  • 2
  • 3
  • »

공지사항

  • Jinsu's GitHub

전체 카테고리

  • 분류 전체보기 (250)
    • Java (18)
    • Spring Framework (33)
      • Toby's Spring 3.1 (6)
      • Spring IoC (6)
      • TDD (6)
      • Reflection (6)
      • AOP (6)
    • Spring Boot (11)
    • Spring Security (22)
    • Database (17)
      • Mysql (2)
      • JDBC (2)
      • JPA (13)
    • Build and Development Tools (3)
      • Maven (1)
      • Gradle (1)
      • Lombok (1)
    • Network (12)
    • Apache Tomcat (11)
    • Microservices Architecture (33)
    • Linux (9)
    • React (10)
    • Docker (22)
    • OAuth (10)
    • DevOps (2)
    • Git (2)
    • HTML (1)
    • CSS (1)
    • JavaScript (1)
    • Problem and Solution Guide (8)
      • Java (1)
      • Spring Framework (4)
      • Reflection (1)
      • Dynamic Proxy (1)
      • JPA (1)
    • Note-Taking (23)

블로그 인기글

전체 방문자

오늘
어제
전체
Powered by Privatenote Copyright © Jinsu's Technical Blog All rights reserved. TistoryWhaleSkin3.4

티스토리툴바