Spring Framework(182)
-
Context
Apache Tomcat에서 Context는 단일 웹 애플리케이션에 대한 실행 환경을 나타내는 컴포넌트로, 하나의 웹 애플리케이션에 대한 모든 설정과 동작을 관리합니다. Context는 톰캣 서버내에서 웹 애플리케이션을 배포하고 관리하는 단위이며, 하나의 Host 안에서 여러 개의 Context가 존재할 수 있습니다. 즉, Context는 웹 애플리케이션을 특정 경로에 매핑하여, 클라이언트가 해당 경로로 요청을 보낼 때 해당 Context가 이를 처리하게 합니다.1. Context의 주요 역할Context는 하나의 웹 애플리케이션에 대한 실행 환경을 정의하며, 여러 가지 설정을 통해 애플리케이션의 동작 방식을 결정합니다. 다음과 같은 주요 역할을 합니다:웹 애플리케이션 매핑: Context는 특정 URL..
2023.06.04 -
Using AspectJ with Spring Applications
이전까지 다룬 내용은 순수한 Spring AOP에 대한 것이었습니다. 이 섹션에서는 AspectJ 컴파일러나 위버(weaver)를 Spring AOP 대신 또는 함께 사용하여, Spring AOP가 제공하는 기능 이상이 필요한 경우 이를 어떻게 활용할 수 있는지 살펴보겠습니다.1. 스프링에서 AspectJ 소개Spring AOP vs. AspectJ: Spring AOP는 더 넓은 AspectJ 프레임워크의 하위 집합입니다. Spring AOP는 기업 애플리케이션의 일반적인 문제를 해결하도록 설계되었지만, 메서드 레벨의 인터셉션에만 한정되며 필드 레벨이나 생성자 레벨의 인터셉션을 지원하지 않습니다. 반면에 AspectJ는 이를 지원합니다.왜 AspectJ를 사용해야 하는가: AspectJ는 더 강력하고 ..
2023.05.26 -
Thread Pool
아파치 톰캣(Apache Tomcat) 서버의 스레드 풀(Thread Pool)은 서버가 동시에 여러 클라이언트의 요청을 효율적으로 처리할 수 있도록 하는 중요한 메커니즘입니다. 웹 서버는 다수의 클라이언트로부터 들어오는 요청을 처리해야 하는데, 스레드 풀을 사용하면 요청이 올 때마다 새로운 스레드를 생성하는 대신 미리 생성된 스레드들을 재사용함으로써 시스템 자원을 절약하고 성능을 최적화할 수 있습니다.스레드 풀의 개념스레드 풀(Thread Pool)은 일정 수의 스레드를 미리 생성해두고 요청이 발생할 때 이 스레드를 할당하여 요청을 처리한 후, 다시 스레드 풀로 반환하는 방식으로 동작합니다. 이를 통해 새로운 스레드 생성과 소멸에 따른 오버헤드를 줄일 수 있으며, 동시에 처리 가능한 요청의 수를 제한하..
2023.05.25 -
LockMin
다음은 Spring 테스트 스위트의 예시로, 한 개 이상의 객체에 다음 인터페이스를 도입한다고 가정합니다:public interface Lockable { void lock(); void unlock(); boolean locked(); }이는 믹스인(mixin)을 나타냅니다. 어드바이스된 객체를 Lockable로 캐스팅하고, 객체의 타입에 관계없이 lock 및 unlock 메서드를 호출할 수 있기를 원합니다. lock() 메서드를 호출하면 모든 setter 메서드가 LockedException을 던지도록 하고 싶습니다. 따라서 객체가 이를 전혀 인지하지 못한 상태에서 객체를 불변으로 만드는 기능을 추가할 수 있습니다. 이것은 AOP의 좋은 예입니다.먼저, 무거운 작업을 수행할 Intr..
2023.05.24 -
Aspect Instantiation Models, An AOP Example
Aspect Instantiation Models이 챕터는 고급 주제입니다. AOP를 처음 시작하는 경우, 나중에 이 내용을 안전하게 건너뛰어도 됩니다.디폴트로 각 aspect는 애플리케이션 컨텍스트 내에서 단일 인스턴스를 가집니다. AspectJ에서는 이를 싱글톤 인스턴스화 모델이라고 부릅니다. 하지만 다른 생명 주기를 가진 aspect를 정의하는 것도 가능합니다. Spring은 AspectJ의 perthis, pertarget, 및 pertypewithin 인스턴스화 모델을 지원하며, percflow 및 percflowbelow는 현재 지원하지 않습니다.@Aspect 애노테이션에서 perthis 절을 지정하여 perthis aspect를 선언할 수 있습니다. 다음은 그 예입니다:@Aspect("per..
2023.05.24 -
Declaring Advice
어드바이스는 포인트컷 표현식과 연관되어 있으며, 포인트컷에 의해 매칭된 메서드 실행 전, 후 또는 실행 중에 실행됩니다. 포인트컷 표현식은 inline pointcut 이거나 named pointcut을 참조할 수 있습니다. ※ inline pointcut 이란? 어드바이스 어노테이션(@Before)에 직접 포인트컷 표현식을 문자열로 작성한 것 @Before("execution(* com.example.service.OrderService.placeOrder(..))")public void beforePlacingOrder() { System.out.println("📌 [인라인 포인트컷] 주문 전에 로그 출력");}"execution(...)" 포인트컷 표현식을 어드바이스 어노테이션에 직접 인라인..
2023.05.23