본문 바로가기

공부 자료/Spring

(64)
[Spring MVC] DTO(Data Transfer Object)/클래스 생성 [DTO(Data Transfer Object)] : 마틴 파울러가 'Patterns of Enterprise Application Architecture'라는 책에서 처음 소개한 엔터프라이즈 애플리케이션 아키텍처 패턴 중 하나 : 데이터를 전송하기 위한 용도의 객체(클라이언트에서 서버 쪽으로 전송하는 요청 데이터를 전달 받을 때, 서버에서 클라이언트 쪽으로 전송하는 응답 데이터를 전송하기 위한 용도로 사용) [DTO 필요 이유] 1) DTO 클래스를 이용한 코드의 간결성 : 요청 데이터를 하나의 객체로 전달 받는 역할 >> 요청 데이터가 많을 경우 추가되는 파라미터가 굉장히 많을 수 있기에 하나로 전달받으면 코드가 간결해질 수 있음 2) 데이터 유형성 검증의 단순화 * 유효성 검증 : 서버 쪽에서 유효..
[Spring MVC] Spring MVC 동작 방식 & 구성 요소 요약) 1. 핸들러 조회 : 핸들러 매핑을 통해 URL에 매핑된 핸들러(컨트롤러) 조회 2. 핸들러 어댑터 조회 : 핸들러(컨트롤러)를 실행할 수 있는 핸들러 어댑터 조회 3. 핸들러 어댑터 실행 4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행 5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 MddelAndView로 변환해 반환 6. viewResolver 호출 7. View 반환 : viewResolver는 뷰의 논리 이름을 물이 이름으로 바꾸고 렌더링 역할을 담당하는 뷰 객체 반환 8. 뷰 렌더링 : 뷰를 통해 뷰를 렌더링 풀이) 1) 클라이언트가 요청을 전송하면 DispatcherServlet 클래스에 요청이 전달 2) DispatcherServlet은 클라이..
[Spring MVC] Spring MVC란? Spring MVC : 클라이언트의 요청을 편리하게 처리해주는 프레임워크 : 우리가 만들게 될 샘플 애플리케이션은 Spring MVC가 제공해주는 기능을 이용해서 만듦 참고) Spring에서 지원하는 모든 기능을 Spring Framework라 하며, Spring의 모듈 중 '서블릿 API'를 기반으로 클라이언트의 요청을 처리하는 모듈이 Spring Web MVC라 하며, 이것을 Spring MVC라고 부름. [MVC 의미] MVC - Model : 클라이언트의 요청을 전달받아 처리한 후 작업의 결과 데이터를 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 의미 * 서비스 계층 : 클라이언트의 요청 사항을 구체적으로 처리하는 영역 * 비즈니스 로직 : 요청사항을 처리하기 위해 Java 코드로 ..
[Spring Core] AOP - 애너테이션(Annotation) 이용 [@AspectJ] : @AspectJ는 애너테이션이 있는 일반 Java 클래스로 관점을 선언하는 스태일 : @AspectJ 스타일은 AspectJ 5 릴리스의 일부로 AspectJ 프로젝트에 의해 도입되었으며, 스프링은 pointcut 구문 분석 및 일치를 위해 AspectJ가 제공하는 라이브러리를 사용해 AspectJ 5와 동일한 애너테이션을 해석 : AOP 런타임은 여전히 순수한 스프링 AOP이며, AspectJ 컴파일러나 위버에 의존하지 않음 @AspectJ 지원 활성화) : @AspectJ aspect 사용을 위해 @AspectJ aspect에 기반한 Spring AOP 설정과 이러한 aspect에 의해 조언되는 자동 프록시 빈에 대한 Spring 지원을 활성화 해야 함 : XML 또는 Java..
[Spring Core] AOP - JoinPoint [Join Point] : 추상적인 개념으로 AOP를 적용할 수 있는 지점을 의미 * AOP 적용 위치 - 지금까지 학습한 메서드 실행 위치 뿐 아니라 다양한 위치에 적용이 가능 : 적용 가능 지점(조인 포인트) : 생성자, 필드 값 접근, static 메서드 접근, 메서드 실행 - AOP를 수행하는 메서드는 이 JoinPoint 인스턴스를 인자로 받게 됨 - JoinPoint 인스턴스에서 조인 포인트 지점의 정보를 얻어야 함 JoinPoint : 어드바이스가 적용될 수 있는 위치, 메서드 실행 위치, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중 지점을 나타냄 : AspectJ를 사용해 컴파일 시점과 클래스 로딩 시점에 적용하는 AOP는 바이트코드를 실제 조작하기 때문에..
[Spring Core] AOP - Pointcut 표현식 [포인트컷 표현식] : 포인트컷은 관심 조인 포인트를 결정하므로 어드바이스가 실행되는 시기 제어가 가능하며 AspectJ는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공 : AspectJ pointcut expression >> AspectJ 가 제공하는 포인트컷 표현식을 줄여서 표현하는 것 * 포인트컷을 이용하면 어드바이스 메서드가 적용될 비즈니스 메서드를 정확하게 필터링 할 수 있음 Pointcut : 특정 조건에 의해 필터링된 Joinpoint, 수많은 Joinpoint 중에 특정 메서드에서만 공통기능(횡단관심사)을 수행시키기 위해 사용함) 포인트컷 표현식 결합) : &&, ||, !를 사용하여 결합 가능 : 이름으로 포인트컷 표현식 참조가 가능 일반적인 포인트컷 표현식) 1. 모든 공개 ..
[Spring Core] AOP - about Advice [Advice 순서] : 어드바이스는 기본적으로 순서를 보장하지 않음 >> 순서 지정을 할 경우 @Aspect 적용 단위로 org.springfamework.core.annotation.@Order 애너테이션 적용이 필요함 (어드바이스 단위가 아닌 클래스 단위로 적용이 가능하며, 하나의 애스펙트에 여러 어드바이스가 존재하면 순서 보장 불가) : 애스펙트를 별도의 클래스로 분리해야 함 [Advice 종류] 1. Before : 조인 포인트 실행 이전에 실행 : 타겟 메서드가 실행되기 전 처리해야 할 필요가 있는 부가 기능 호출 전 공통 기능을 실행 : Before Advice 구현한 메서드는 일반적으로 리턴타입이 void (리턴값을 갖더라도 Advice 적용 과정에 영향 없음) : 작업 흐름 변경 불가 :..
[Spring Core] About AOP & AOP 용어 AOP 관련 정리글 https://kcode-recording.tistory.com/m/43 [Spring Core] AOP (Aspect Oriented Programming) AOP(Aspect Oriented Programming)란? : OOP(Object Oriented Programming)은 객체지향 프로그래밍 즉, 객체 간의 관계를 지향하는 프로그래밍 방식 : Aspect(관심)을 지향하는 프로그래밍은 애플리케이션에 필요한 기 kcode-recording.tistory.com Spring MVC 구조는 @Controller, @Service, @Repository와 같이 관심사 별 계층을 나눠 객체를 관리하게 되는데 관심사의 분리는 모듈화의 핵심임. 하지만 OOP에서 객체를 잘 활용하기 위..