spring 9

[Spring] AOP를 이용한 Request 로깅

AOP(Aspect-Oriented Programming)를 이용하여 HTTP 요청과 응답을 로깅했습니다. package contest.collectingbox.global.config;import jakarta.servlet.http.HttpServletRequest;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Comp..

BACK/SPRING 2024.05.05

[Spring] @ExceptionHandler를 사용해 예외 처리하기

스프링은 API 예외 처리 문제를 해결하기 위해 @ExceptionHandler를 사용한 편리한 예외 처리 기능을 제공한다. 다음은 진행하고 있는 프로젝트에 @ExceptionHandler를 적용한 코드이다. @Getter @AllArgsConstructor public enum ErrorCode { // 400 NOT_SELECTED_TAG(BAD_REQUEST, "수거함 태그는 반드시 한 개 이상 설정해야 합니다."); // 404 // 409 // 500 private final HttpStatus httpStatus; private final String message; } enum 클래스를 만들어 상태 코드와 메세지를 담은 열거형을 정의한다. @Getter public class Collecti..

BACK/SPRING 2024.04.18

[Spring] AOP란

Spring AOP 관점 지향 프로그래밍(AOP-Aspect Oriented Programming) AOP는 관점을 기준으로 묶어 개발하는 방식을 말한다. 관점(aspect)이란, 어떤 기능을 구현할 때 그 기능을 핵심 기능과 부가 기능으로 구분해 각각을 하나의 관점으로 보는 것을 의미한다. 핵심 기능은 주로 핵심 비지니스 로직이고, 부가 기능은 핵심 로직을 실행하기 위한 데이터베이스 연결, 로깅, 파일 입출력 등이 있다. 여러 비지니스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식을 AOP라고 한다. => 흩어져 있는 부분들을 Aspect를 이용해 모듈화 시킨 것을 볼 수 있다. 모듈화 시킨 Aspect를 어느 곳에 사용해야 하는지 정의해주면 된다. 스프링 AOP..

BACK/SPRING 2023.01.02

[Spring] MVC 동작 원리

Spring MVC Spring MVC란 웹 애플리케이션 개발을 위한 MVC 패턴 기반의 웹 프레임워크이다. 애플리케이션의 구성 요소를 Model, View, Controller로 분리한다. Model 데이터 관리 및 비지니스 로직을 처리하는 부분이다. 요청에 의한 로직만 처리하고 이 결과를 어디에, 어떻게 사용하는지는 상관하지 않는다. 뷰나 컨트롤러에 대한 어떠한 정보도 알면 안된다. 데이터의 변경이 일어났을때 뷰를 참조하는 내부속성값을 가지면 안된다는 것이다. ex) DAO, DTO, Service @Service를 통해 스프링 컨테이너에 등록된 객체는 Model에 해당된다. View 비지니스 로직의 처리 결과를 통해 사용자 인터페이스가 표현되는 구간이다. Model을 통해 전달받은 데이터가 어떤 데..

BACK/SPRING 2022.12.25

[Spring JPA] 쿼리 메소드 사용하기

쿼리 메소드란? JPA를 이용해서 목록 기능을 구현할 때는 JPQL을 이용하면 된다. JPQL은 검색 대상이 테이블이 아닌 엔티티이므로 다소 복잡할 수 있다. 쿼리 메소드는 메소드의 이름으로 필요한 쿼리를 만들어주는 기능이다. find + 엔티티이름 + By + 변수 이름 ex) findBoardByTitle() : Board 엔티티에서 title 변수 값만 조회한다. 엔티티 이름은 생략될 수 있고, 현재 사용하는 Repository 인터페이스에 선언된 타입 정보를 기준으로 자동으로 엔티티 이름이 적용된다. -게시글 제목으로 목록 조회하는 findByTitle() 메소드를 BoardRespository 인터페이스에 추가 package com.example.chapter05.persistence; impo..

BACK/SPRING 2022.07.04

[Spring] AOP란? 용어 정리, 사용 방법

AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. OOP를 보완하는 수단으로,여러 곳에서 쓰이는 공통 기능을 모듈화하고, 쓰이는 곳에 필요할 때 연결함으로써, 유지 보수 혹은 재사용에 용이하도록 프로그래밍 하는 것이다. 중복되는 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용이 용이하다는 장점들이 있다. 여러 concerns들과 여러 모듈들이 뒤섞여 있는데, 모듈끼리, concerns끼리 분리한다. 이렇게 분리해 독립된 클래스로 만든 부가기능을 aspect라고 한다. 프로그램에서 비즈니스 로직을 분리하고, spring framework에서 런타임시 필요한 기능을 주입시킨다. 이전에는 Caller가 app funct..

BACK/SPRING 2021.10.18

[Spring] Maven 이란? (+POM)

큰 규모의 소프트웨어의 경우 많은 프로젝트, 모듈로 구성되어 있다. 수동적으로 빌드하는 것은 많은 시간을 요구된다. 효율적인 빌드 도구가 필요하다. -> maven의 등장 Maven을 사용할때의 장점 -자동적인 build tool 빌드라는 작업은 몇 개의 단계로 이루어져 있다. 이러한 작업을 자동적으로 수행해준다. -Dependency Management tool A 라이브러리를 사용하려고 했는데, A 라이브러리는 B와 C를 참조한다. 그리고 C는 D를 의존한다. A만 포함하면 B,C,D를 받아올 수 있다. 이러한 의존성 관리가 용이하다. -Maven repository 모든 라이브러리를 관리하는 중앙 집중 저장소. 필요에 따라서 웹 사이트까지 만들어줄 수 있게 한다. Pom.xml은 메이븐 설정 파일이..

BACK/SPRING 2021.10.16

[Spring] 스프링이란? (특징, 장점)

스프링이란? 스프링이란 POJO기반의 엔터프라이즈 애플리케이션으로, 개발을 쉽고 편하게 해준다. POJO(Plain Old Java Object) – 특정 클래스나 인터페이스를 상속하지 않는다. Servlet, class(related to db) 등을 상속하면 특정 기술에 종속되는 문제가 있다. 그래서 상속하지 않는 대신 메서드나 인터페이스을 활용하고 싶으면 Pojo는 object 메소드를 호출하는 방식을 사용한다. Pojo -> interface -> object1 object2 인터페이스를 구현한 obect1과 object2가 있다고 하자. object1을 사용하다 object2 사용하려고 할 때 POJO는 인터페이스를 이용하기때문에 코드가 바뀌지 않는다. 스프링의 장점 자바 애플리케이션을 개발하는..

BACK/SPRING 2021.10.16