Spring Boot 8

[Spring Boot] AOP

AOP(Aspect Oriented Programming)AOP는 관점지향 프로그래밍이다. AOP는 횡단 관심사(cross-cutting concerns)를 분리하여 코드의 재사용성과 유지보수성을 높이는 기술이다. AOP를 사용하면 로킹, 트랜잭션 관리, 보안 등의 공통적인 기능을 여러 모듈에서 중복하지 않고 한 곳에서 관리할 수 있다. AOP 용어Aspect : 횡단 관심사를 모듈화한 것. 로깅, 트랜잭션 관리, 보안 등을 하나의 Aspect로 정의할 수 있다.Join Point : Advice가 적용될 수 있는 특정 시점을 말한다. 일반적으로 메서드 호출, 예외 발생, 필드 접근  등의 이벤트가 될 수 있다.Advice : 특정 Join Point에서 실행되는 실제 동작을 정의한 코드. Advice는..

Spring Boot 2024.08.07

[Spring Boot] 예외처리 방법

1. @ExceptionHandler 사용특정 컨트롤러 또는 애플리케이션 범위에서 발생하는 특정 예외를 처리하기 위해 사용. 이를 통해 각 컨트롤러에서 개별적으로 예외를 처리할 수 있다.@RestController@RequestMapping("/api")public class SampleController { @GetMapping("/item") public String getItem() { throw new CustomNotFoundException("아이템을 찾을 수 없습니다."); } @ExceptionHandler(CustomNotFoundException.class) public ResponseEntity handleCustomNotFoundExceptio..

Spring Boot 2024.07.25

[Spring Boot] 암호화/복호화(AES, RSA, BCrypt)

AES(Advanced Encryption Standard)대칭키 암호화 알고리즘으로, 동일한 키를 사용하여 데이터를 암호화하고 복호화한다. AES는 빠르고 보안성이 높아 많은 어플리케이션에서 사용한다. RSA(Rivest-Shamir-Adleman)공개 키 암호화 알고리즘으로, 공개 키와 개인 키 쌍을 사용하여 데이터를 암호화하고 복호화한다. 보안이 매우 뛰어나지만, 속도는 대칭키 암호화에 비해 느리다. BCrypt단방향 해시 함수로, 비밀번호를 안전하게 저장하기 위해 주로 사용한다. 해시된 비밀번호는 복호화할 수 없으며, 대신 원본 비밀번호와 해시된 비밀번호를 비교하는 방식으로 검증한다. CryptoUtil 클래스 예제import javax.crypto.Cipher;import javax.crypto..

Spring Boot 2024.07.24

[Spring Boot] 어노테이션(Annotation)

어노테이션이란 코드에 메타데이터를 추가하는 방법. 메타데이터는 프로그램의 동작에 영향을 주지 않지만, 컴파일러나 런타임 환경에서 코드를 처리하는 방법에 영향을 줄 수 있다. JAVA에서 어노테이션은 @ 기호로 시작하며, 클래스, 메서드, 변수 등 다양한 코드 요소에 적용할 수 있다. 어노테이션 용도코드 문서화 : 어노테이션을 통해 코드의 의미를 명확하게 설명할 수 있다.컴파일러 지시 : 컴파일러에게 특정 행동을 지시할 수 있다.런타임 처리 : 런타임 환경에서 어노테이션을 읽어 특정 동작을 수행할 수 있다.프레임워크 지원 : 프레임워크가 어노테이션을 통해 특정 기능을 제공할 수 있다.Spring Boot에서 많이 사용하는 어노테이션@SpringBootApplicationSpring Boot 애플리케이션의 ..

Spring Boot 2024.07.24

[Spring Boot] 필터(Filter)

필터란HTTP 요청 및 응답의 처리를 변환하거나 수정할 수 있는 컴포넌트이다. 필터는 주로 다음과 같은 작업을 수행한다.요천 전 처리 : 클라이언트의 요청이 컨트롤러에 도달하기 전에 요청을 검사하고 수정한다.응답 후 처리 : 컨트롤러의 응답이 클라리언트데 전달되기 전에 응답을 검사하고 수정한다.로깅 : 요청 및 응답 로그를 기록한다.인증 및 권한 검사 : 요청이 적절한 인증 및 권한을 가졌는지 확인한다.데이터 압축 : 응답 데이터를 압축하여 클라이언트에 전달한다.캐싱 : 요청 결과를 캐싱하여 성능을 향상시킨다. 필터의 동작 원리필터는 체인(chain) 구조로 동작한다. 클라이언트의  요청이 들어오면, 요청은 필터 체인의 첫 번째 필터로 전달되고, 각 필터는 자신의 작업을 수행한 후 다음 필터로 요청을 전..

Spring Boot 2024.07.24

[Spring Boot] 트랜잭션(Transaction)

트랜잭션이란Spring Boot에서 트랜잭션은 데이터베이스 작업을 하나의 작업 단위로 묶어 처리하는 것을 의미한다. 트랜잭션을 사용하면 일련의 데이터베이스 작입이 모두 성공적으로 완료되거나, 어느 하나라도 실패하면 모두 취소되는 것을 보장할 수 있다. 이는 데이터 무결성과 일관성을 유지하는데 매우 중요하다.Spring Boot에서 트랜잭션을 사용하려면 @transactional 어노테이션을 활용한다. @Transactional 어노테이션은 클래스나 메소드에 적용하여 해당 범위 내의 데이터베이스 작업이 트랜잭션으로 처리되도록 한다. 트랜잭션 특징원자성 : 트랜잭션의 모든 연산이 모두 반영되거나, 모두 반영되지 않아야 한다.일관성 : 트랜잭션이 성공적으로 완료되면, DB는 일관성 있는 상태를 유지한다.격리성..

Spring Boot 2024.07.19

[Spring Boot] Controller, Service, Mapper, DTO

Spring Boot 애플리케이션에서는 MVC(Model-View-Controller) 패턴을 사용하여 애플리케이션을 구조화할 수 있으며, Controller, Service, DAO, Mapper는 애플리케이션을 모듈화하고 유지 보수하기 쉽게 만드는 데 중요한 역할을 한다. 1. Controller클라이언트 요청을 처리하고, 요청에 따라 적절한 서비스를 호출하여 결과를 반환한다. 주로 HTTP 요청을 매핑하고, 요청 데이터를 바인딩하며, 서비스 계층을 호출한다.package com.example.demo.controller;import com.example.demo.dto.UserDTO;import com.example.demo.service.UserService;import org.springfram..

Spring Boot 2024.07.18

[Spring Boot] Batch 기본 개념

Spring Boot Batch란Spring Boot Batch는 Spring Batch라는 프레임워크를 간편하게 통합할 수 있게 해주는 모듈이다. Spring Batch는 대량의 데이터 처리를 주기적으로 실행하기 위해 설계된 경량화된 배치 프레임워크다. 이 프레임워크는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 스킵 및 리소스 관리 등을 포함한 많은 고급 서비스를 제공한다. Spring Boot Batch 기본 개념Spring Batch는 크게 Job, Step, ItemReader, ItemProcessor, ItemWriter 등의 주요 구성 요소로 이루어져 있다.  Job: 배치 작업의 논리적인 단위로, 여러 개의 Step으로 구성된다. 하나의 배치 Job은 하나 이상의 Step..

Spring Boot 2024.07.18