본문 바로가기

Spring

(22)
[Spring MVC] Spring MVC 동작 방식 Spring MVC에서 클라이언트의 요청이 어떤 과정을 거쳐 컨트롤러까지 가는지 Spring MVC 내부의 동작 방식을 공부하겠습니다. Spring MVC의 동작 방식과 구성 요소 위의 그림은 클라이언트의 요청이 Spring MVC 내부에서 어떻게 처리하는지를 보여주고 있습니다. 가장 먼저 클라이언트로부터 오는 요청을 받아 적합한 컨트롤러를 위임하는 프론트 컨트롤러인 DispatcherServlet이라는 클래스에 클라이언트의 요청이 전달됩니다. DispatcherServlet은 요청 정보를 통해 클라이언트의 요청을 위임할 Controller에 대한 검색을 HandlerMapping 인터페이스에게 요청합니다. HandlerMapping은 클라이언트 요청과 매핑되는 핸들러 객체를 다시 DispatcherSe..
[Spring MVC] Spring MVC란? Spring MVC란? Spring의 모듈 중에는 웹 계층을 담당하는 몇 가지 모듈이 있습니다. 그중 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데, 그 모듈의 이름은 spring-webmvc입니다. spring-webmvc를 줄여서 Spring MVC라 부르고 있고, Spring MVC가 웹 프레임워크의 한 종류이기 때문에 Spring MVC 프레임워크라고도 부릅니다. Spring MVC에서 MVC의 의미를 살펴보도록 하겠습니다. Model Model은 Spring MVC에서 M에 해당합니다. Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 합니다. 이렇게 처리한 작업의 결과 데이터를 클라이언트에게 응답으..
[Spring] 조인 포인트(JoinPoint) AOP 적용 위치 AOP는 지금까지 학습한 메서드 실행 위치뿐만 아니라 다음과 같은 다양한 위치에 적용할 수 있습니다. 적용 가능 지점(조인 포인트): 생성자, 필드 값 접근, static 메서드 접근, 메서드 실행 AOP를 수행하는 메서드는 이 JoinPoint 인스턴스를 인자로 받게 됩니다. JoinPoint 인스턴스에서 조인 포인트 지점의 정보를 얻어내야 합니다. 조인 포인트(Join Point) 조인 포인트(JoinPoint)는 추상적인 개념이고, AOP(Aspect Oriented Programming)를 적용할 수 있는 지점을 의미합니다. 어드바이스가 적용될 수 있는 위치, 메서드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중 지점을 나타냅니다. Aspe..
[Spring] 포인트컷(Pointcut) 표현식 포인트컷(Pointcut)과 표현식 & 지시자 포인트컷(Pointcut)은 관심 조인 포인트를 결정하므로 어드바이스가 실행되는 시기를 제어할 수 있습니다. AspectJ는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공합니다. @Pointcut("execution(* transfer(..))") // 포인트컷 표현식 private void anyOldTransfer() {} // 포인트컷 서명 포인트컷 표현식은 AspectJ pointcut expression => AspectJ가 제공하는 포인트컷 표현식을 줄여서 표현한 것입니다. 포인트컷 지시자 포인트컷 표현식은 excution 같은 포인트컷 지시자(Pointcut Designator, PCD)로 시작합니다. 포인트컷 지시자 종류 종류 설명 e..
[Spring] 타입별 어드바이스(Advice) 어드바이스(Advice) Aspect를 언제 핵심 코드에 적용할지를 정의합니다. 부가 기능에 해당됩니다. 특정 조인 포인트에서 Aspect에 의해 취해지는 조치입니다. 어드바이스 순서 어드바이스는 기본적으로 순서를 보장하지 않습니다. 순서를 지정하고 싶으면 @Aspect 적용 단위로 org.springframework.core.annotation.@Order 애너테이션을 적용하여야 합니다. 어드바이스 단위가 아니라 클래스 단위로 적용할 수 있습니다. 하나의 Aspect에 여러 어드바이스가 존재하면 순서를 보장받을 수 없습니다. Aspect를 별도의 클래스로 분리하여야 합니다. 어드바이스 종류 Before 조인 포인트 실행 이전에 실행합니다. 타겟 메서드가 실행되기 전에 처리해야 할 필요가 있는 부가 기능..
[Spring] AOP(Aspect Oriented Programming) 용어 및 개념들 AOP의 용어 및 개념들 애스팩트(Aspect) 여러 객체에 공통으로 적용되는 기능입니다. (공통 기능) 어드바이스 + 포인트컷을 모듈화 하여 애플리케이션에 포함되는 횡단 기능입니다. 여러 어드바이스와 포인트컷이 함께 존재합니다. 조인 포인트(Join Point) S는 메서드 실행 전의 포인트이고 E는 메서드 수행 후의 포인트입니다. 이러한 포인트를 어드바이스가 적용될 조인 포인트라고 부릅니다. 클래스 초기화, 객체 인스턴스화, 메서드 호출, 필드 접근, 예외 발생과 같은 애플리케이션 실행 흐름에서의 특정 포인트를 의미합니다. 애플리케이션에 새로운 동작을 추가하기 위해 조인포인트에 관심 코드(aspect code)를 추가할 수 있습니다. 횡단 관심은 조인포인트 전/후에 AOP에 의해 자동으로 추가됩니다...
[Spring] AOP(Aspect Oriented Programming)가 필요한 이유 기본 개념 이전 글인 [Spring] Spring Framework란?(3)에 정리해 두었습니다. 객체 지향 프로그래밍(Object Oriented Programming:OOP) 객체지향 프로그래밍은 공통된 목적을 띈 데이터와 동작을 하나의 객체로 정의하는 것입니다. 객체를 활용함으로써 코드의 재사용을 할 수 있는 것이 큰 장점입니다. 객체를 잘 활용하기 위해선 관심사 분리 (Separation of Concerns, SoC)의 디자인 원칙을 준수하여야 합니다. 문제점 특정 관심사 업무 코드에 트랜잭션, 보안, 로깅 등의 코드가 존재하게 됩니다. 트랜잭션, 보안, 로깅 코드는 업무와는 관련이 없지만 애플리케이션에 필수적인 부가 기능입니다. 트랜잭션, 보안,로깅 기능은 불특정 다수의 클래스에서 존재하게 됩..
[Spring] DI(Dependency Injection) 종합 실습 준비 본 글의 코드예제룰 수행하기 위해서는 이전 글의 이해와 함께 코드 예제를 수행하여야 합니다. [Spring] Spring 간단한 서비스 생성 및 테스트 [Spring] DI(Dependency Injection)란? [Spring] 스프링 컨테이너(Spring Container) [Spring] 빈(Bean) [Spring] 빈 스코프(Bean Scope) [Spring] 싱글톤(Singleton) [Spring] 컴포넌트 스캔(Component Scan) Spring DI 실습 MemberTest.java 수정 package developingman.sample_Project.member; import developingman.sample_Project.DependencyConfig; import..