BE/Spring & Spring Boot 62

[Spring Boot] @Slf4j

Lombok 라이브러리에서 제공하는 어노테이션.클래스 내부에 SLF4J(Simple Logging Facade for Java) 기반의 로깅 객체를 자동으로 생성해 주는 기능을 함.즉, @Slf4j를 클래스에 추가하면, log라는 이름의 Logger 객체가 자동으로 생성되며, 이를 통해 로깅을 쉽게 사용할 수 있음. 1. @Slf4j 사용법@Slf4j 적용 및 사용 예제import lombok.extern.slf4j.Slf4j;@Slf4jpublic class LogExample { public static void main(String[] args) { log.info("Hello, this is an INFO log message!"); log.debug("Debuggi..

[Spring Boot] QueryDSL

QueryDSL 개념 QueryDSL은 타입 안전한 JPQL(또는 SQL) 쿼리를 작성하기 위한 라이브러리임. 일반적으로 JPA를 사용할 때 JPQL을 문자열로 작성하는데, 이는 컴파일 타임에 오류를 잡을 수 없고 실행 시에 오류가 발생할 위험이 있음. QueryDSL은 이를 보완하여, 코드를 작성하는 시점에 컴파일러가 쿼리의 오류를 검출할 수 있도록 해줌. QueryDSL은 Java 코드를 통해 쿼리를 작성할 수 있게 해주며, 이를 통해 가독성과 유지보수성을 높일 수 있음.주요 특징타입 안전(Type-safe):컴파일 타임에 쿼리의 구조와 필드 타입을 검증함.예를 들어, 정수 필드에 문자열을 비교하는 등의 오류를 방지할 수 있음.코드 자동 생성:엔티티 클래스를 기반으로 QClass라는 쿼리용 클래스를 ..

[Spring Boot] @Scheduled

@Schedule은 Spring Framework에서 제공하는 애노테이션으로, 정기적으로 특정 작업을 실행하는 데 사용됩니다. 주로 백그라운드 작업이나 일정 작업(예: 데이터 정리, 이메일 전송, 로그 정리)을 자동화하기 위해 사용됩니다. 1. @Scheduled 애노테이션이란?정의: 스프링에서 메서드를 스케줄링 작업으로 등록하고, 지정된 주기에 따라 실행되도록 설정하는 애노테이션.주요 특징:특정 시간 간격이나 일정에 따라 자동으로 메서드를 실행.작업이 비동기적으로 실행되도록 설정 가능.다양한 표현식(고정 시간, 크론 표현식 등)을 지원.2. @Scheduled의 주요 속성 @Scheduled에서 사용할 수 있는 속성은 크게 세 가지로 나뉩니다: 1. fixedRate설명: 메서드 실행 간격을 밀리초 단..

[Spring Boot] SpringDoc

SpringDoc은 Spring Boot 애플리케이션에서 RESTful API 문서를 자동으로 생성하기 위한 라이브러리임. Swagger/OpenAPI 3.0 사양을 기반으로 하며, 애플리케이션의 API를 시각화하거나 클라이언트에서 테스트할 수 있는 도구를 제공함.SpringDoc의 주요 기능 1. OpenAPI 정의 생성Spring 애플리케이션의 컨트롤러와 메서드를 기반으로 OpenAPI 3.0 문서를 자동 생성함.2. Swagger UI 통합애플리케이션 실행 시 Swagger UI를 통해 브라우저에서 API 문서를 시각화하고 테스트할 수 있음.3. 지원되는 스프링 기능@RestController, @Controller와 @RequestMapping을 기반으로 동작함.다양한 매개변수(@PathVaria..

[Spring Boot] SpringSecurity UserDetails, User

Spring Security에서 UserDetails와 User Spring Security는 애플리케이션의 인증(Authentication)과 권한(Authorization)을 관리하기 위해 설계된 프레임워크임.UserDetails와 User는 사용자의 인증 정보를 처리하기 위해 사용되는 주요 인터페이스 및 클래스임.1. UserDetails 개념 UserDetails는 Spring Security에서 사용자 정보를 캡슐화한 인터페이스임. • 사용자의 계정 정보(이름, 비밀번호, 권한 등)와 계정 상태(활성화 여부, 잠김 여부 등)를 정의함. • UserDetails를 구현하여 사용자 정보를 커스터마이징할 수 있음. 주요 메서드 UserDetails는 다음과 같은 메서드를 제공함: 1. getAutho..

[Spring Boot] OSIV

OSIV (Open Session in View)란? OSIV(Open Session in View)는 Hibernate와 같은 JPA 구현체에서 제공하는 디자인 패턴임. • 클라이언트의 요청이 시작된 후, **영속성 컨텍스트(EntityManager)**가 View(Rendering)까지 열려 있는 상태를 유지하도록 설정함. • 이 패턴은 지연 로딩(Lazy Loading)을 지원하기 위해 사용됨.OSIV 동작 방식 1. 요청 시작 • 클라이언트의 요청이 들어오면, 영속성 컨텍스트가 생성됨. 2. 서비스 및 리포지토리 레이어 처리 • 서비스나 리포지토리에서 필요한 엔티티를 조회 및 수정함. 3. View 렌더링 단계 • View에서 요청한 엔티티에 대해 지연 로딩이 필요한 경우, 영속성 컨텍스트가 열려..

[Spring Boot] Swagger와 OpenAPI

Swagger와 OpenAPI란?SwaggerSwagger는 RESTful API를 설계, 문서화, 그리고 테스트할 수 있는 도구 모음임. • 개발자가 REST API를 쉽게 이해하고, 활용할 수 있도록 문서와 테스트 환경을 제공함. • Swagger는 OpenAPI의 초기 버전(2.0)에서 시작되었으며, 이후 OpenAPI로 발전했음. OpenAPIOpenAPI는 API의 설계와 문서화를 위한 표준 사양임. • OpenAPI Specification(OAS): RESTful API를 정의하는 문법 및 규칙. • YAML 또는 JSON 형식으로 API의 엔드포인트, 요청/응답, 데이터 구조 등을 명세함.Swagger와 OpenAPI의 관계 • Swagger는 OpenAPI Specification(OAS..

[Spring Boot] MockMvc

MockMvc란? MockMvc는 Spring Boot에서 제공하는 테스트 유틸리티임. • Spring MVC 애플리케이션의 컨트롤러를 서버를 띄우지 않고도 테스트할 수 있도록 지원함. • 실제 HTTP 요청을 보내지 않고, 가상으로 요청 및 응답을 처리함.MockMvc의 주요 특징 1. 가상 HTTP 요청 처리 • Mock 환경에서 컨트롤러 로직을 테스트할 수 있음. • 실제 서버 없이도 HTTP 요청/응답의 동작을 확인 가능함. 2. 완전한 Spring 컨텍스트 지원 • MockMvc는 Spring의 DI(의존성 주입)와 컨텍스트를 활용해 컨트롤러 및 관련 빈을 로드함. 3. Rest API 테스트 가능 • GET, POST, PUT, DELETE 등의 HTTP 메서드와 다양한 요청 파라미터를 테스트..

[Spring Boot] Specification과 QueryDSL

1. JPA Specification 개념 • Spring Data JPA에서 제공하는 동적 쿼리 작성 기능. • Java 객체 기반으로 조건을 조합하며, Criteria API를 내부적으로 활용. • 복잡한 쿼리를 작성하면서도, 조건을 재사용할 수 있도록 설계되었다. 구성 요소 • Specification 인터페이스: 동적 쿼리의 조건을 정의. • Predicate: 조건문을 의미하며, CriteriaBuilder를 통해 생성.Specification의 주요 메서드 • toPredicate() • 동적 쿼리의 핵심 메서드로, 필터 조건을 정의. 기본 형태Specification specification = (root, query, criteriaBuilder) -> { // 조건 정의 ret..

[Spring Boot] List<Sort.Order>와 Sort.Order.desc()

출처 : ChatGPTSpring Data JPA 또는 Spring에서 정렬을 설정할 때 사용되는 코드. 주로 데이터베이스에서 데이터를 정렬하여 가져오기 위한 요청을 만들 때 활용된다구조 설명 1. Sort 클래스:  • Spring Data JPA에서 제공하는 클래스.  • 정렬 조건(오름차순, 내림차순)을 정의할 때 사용.  • 여러 컬럼에 대한 정렬 기준을 설정할 수 있다. 2. Sort.Order 클래스:  • 단일 정렬 조건(컬럼 이름과 방향)을 정의한다.  • 정렬 방향:  • Sort.Order.asc() → 오름차순 정렬.  • Sort.Order.desc() → 내림차순 정렬.List sorts = new ArrayList();sorts.add(Sort.Order.desc("columnN..