본문 바로가기

Spring Framework8

『Spring Boot』 선언적 트랜잭션(Declarative Transaction) 선언적 트랜잭션 (Declarative Transaction)에 대해 알아보기 전에 트랜잭션과 비교를 한번 해보자.  선언적 트랜잭션 설정 파일이나 어노테이션을 통해 코드에 트랜잭션 로직을 직접 작성하지 않고 선언적으로 트랜잭션을 처리하는 방식. 트랜잭션 Java 코드 내에서 트랜잭션 관리 객체를 직접 사용하여 트랜잭션 시작, 커밋, 롤백을 명시적으로 관리하는 방식.  간단하게 말하자면 선언적 트랜잭션을 사용하면 PlatformTransactionManager와 TransactionTemplate을 사용하여 코드로 트랜잭션을 제어하는 귀찮은 작업을 하지 않아도 된다. 물론 복잡한 트랜잭션 제어가 필요한 상황이라면 @Transactional 어노테이션에서 지원해 주는 다양한 속성들을 활용해야 되지만 말.. 2025. 1. 12.
『Spring Boot』 application.yml과 Profile 전 프로젝트에서는 "Profile 별로 모든 설정"을 각각 관리했는데 이번 프로젝트에서는 "공통 설정 + Profile별 설정"을 분리해서 관리한다. 프로젝트마다 환경을 다루는 방법에 차이가 존재하는데 이번 기회에 "공통 설정 + Profile별 설정"에 대해 알아볼 겸 정리하려 해 본다.  application.yml과 Profileapplication.yml 혹은 application.properties는 Spring Boot 애플리케이션 구동 시 자동으로 로드되는 구성 파일이다.Key-Value 혹은 yml 포맷을 통해 애플리케이션에서 사용할 설정 값을 정의한다. 설정 값 예시 서버 포트 DB 접속 정보 로그 레벨 설정 외부 API Token 정보   application-{profile}.y.. 2024. 12. 28.
『MVC』 Bean Validation RESTful API를 개발할 때 클라이언트로부터 전달받은 데이터의 유효성 검증은 필수적인데 Spring Framework에서는 Bean Validation이란 기능을 지원한다.  Bean Validation은 어노테이션을 활용하여 객체의 프로퍼티 값이 특정 조건을 만족하는지 검증하는 프레임워크다. Spring Boot에서는 기본으로 지원한다.@Valid, Java에서 지원하는 어노테이션@Validated, Spring에서 지원하는 어노테이션 -> 내부에 groups 기능을 포함하고 있다.  내부 구조Bean Validation은 Java 표준 스펙(JSR 380)으로 다음과 같은 주요 구성 요소로 이루어져 있다.  Constraint Annotations @NotNull, @Size 등과 같이 필드에 .. 2024. 12. 3.
『Network』 쿠키, 세션 쿠키쿠키는 클라이언트(브라우저)의 로컬에 저장되는 작은 데이터 파일로 키와 값의 쌍으로 이루어져 있다. 서버에서 생성되어 클라이언트로 전송되며 클라이언트는 이를 저장하고 필요시 다시 서버로 전송한다.  만료 시간을 지정할 수 있어 브라우저가 종료되어도 쿠키가 유지될 수 있다. 사용자가 별도의 요청을 하지 않아도 브라우저가 자동으로 서버에 쿠키를 전송한다.  동작 원리클라이언트 요청: 클라이언트가 서버에 페이지를 요청한다.쿠키 생성 및 전달: 서버는 필요한 경우 쿠키를 생성하여 HTTP 응답 헤더에 포함시켜 클라이언트로 전송한다.쿠키 저장: 클라이언트는 수신한 쿠키를 로컬에 저장한다.쿠키 자동 전송: 이후 동일한 도메인에 대한 요청 시 브라우저는 자동으로 쿠키를 HTTP 요청 헤더에 포함하여 서버로 전송한.. 2024. 11. 29.
『Spring MVC』 필터, 인터셉터 공통 업무에 관련된 코드를 각 페이지마다 작성한다면 중복 코드가 많아지고 프로젝트 규모가 커질수록 유지 보수가 어려워진다. 그래서 Spring Framework에서는 다음과 같은 기능들을 제공한다.Filter (필터)Interceptor (인터셉터)AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)위의 세 가지 기능은 모두 특정 작업을 실행하기 전에 선처리하거나 실행한 후에 후처리 하는 데 사용된다. 이번 글에서는 필터와 인터셉터가 무엇인지 그리고 그 차이점에 대해 알아보자.  필터란?필터는 클라이언트의 요청과 응답을 거르는 역할을 한다.  DispatcherServlet에 요청이 전달되기 전에 실행되며 URL 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기.. 2024. 11. 26.
『Spring MVC』 메시지, 국제화 Spring MVC에서 메시지 관리와 국제화(i18n)를 적용하는 방법에 대해 알아보자.  메시지 관리의 필요성개발 과정에서 UI에 표시되는 텍스트를 변경해야 하는 상황이 자주 발생한다.  예를 들어, "상품명"이라는 레이블을 "상품이름"으로 변경해야 한다고 가정하자. 이때 여러 곳에서 하드 코딩된 텍스트를 일일이 수정하는 것은 비효율적이다. 이러한 문제를 해결하기 위해 메시지 관리 기능을 사용하여 모든 텍스트를 한 곳에서 관리할 수 있다.  메시지 파일 생성 및 적용메시지 파일 생성메시지 관리를 위해 messages.properties 파일을 생성하고 키-값 쌍으로 텍스트를 관리한다. 국제화를 위한 메시지 파일 생성다국어 지원을 위해 각 언어별로 메시지 파일을 관리한다.  Spring에서 메시지 소스 .. 2024. 11. 26.
『Spring Boot』 Spring Boot Annotation 정리 스프링 부트를 사용하여 RESTful API를 개발할 때 주로 사용하는 어노테이션을 알아보자. 특히 JSON 형식의 데이터를 처리할 때 유용한 애노테이션들을 중심으로 살펴보자. 어노테이션을 사용할 때에도 내부 동작 원리나 해당 어노테이션을 사용하게 된 배경을 아는 것 또한 중요하지만 Deep Dive 하기 전에 40개 정도만 가볍게 한번 훑어보자.  @RestController @Controller와 @ResponseBody를 결합한 애노테이션으로 컨트롤러의 메서드들이 JSON 형식의 데이터를 반환하도록 한다.   @ResponseBody 메서드의 반환 값을 HTTP 응답 본문으로 변환한다. @RestController에서는 기본적으로 적용된다.  @RequestMapping 클래스나 메서드 수준에.. 2024. 11. 25.
『Spring Core』 Bean Scopes Bean Scope 스프링 프레임워크에서 빈 스코프란 빈이 생성되고 유지되는 범위를 의미한다. 빈이 얼마나 오래, 어떤 범위에서 유지될지를 결정한다. 스프링은 다음과 같은 빈 스코프를 제공한다.  싱글톤 (Singleton)기본 스코프로, 스프링 컨테이너 시작부터 종료까지 빈이 유지된다. 프로토타입 (Prototype)요청 시마다 새로운 빈 인스턴스를 생성하며, 생성과 의존관계 주입까지만 컨테이너가 관리한다. 웹 관련 스코프request: HTTP 요청이 시작되고 끝날 때까지 빈이 유지된다.session: 세션이 활성화되는 동안 빈이 유지된다.application: 서블릿 컨텍스트와 동일한 범위로 빈이 유지된다.   Singleton Scope 싱글톤 스코프는 스프링의 기본 스코프이므로 별도의 설정 없이.. 2024. 11. 19.