본문 바로가기

Spring Boot

(18)
[Spring Boot] Redis 설명 및 예제 개요Redis는 키-값 구조의 데이터 저장소로, 데이터의 빠른 액세스가 필요한 애플리케이션에서 주로 사용됩니다. Spring Boot에서는 Redis를 손쉽게 통합하여 캐시, 세션 관리, 실시간 데이터 처리를 구현할 수 있습니다. 오픈 소스, 인메모리 데이터 저장소로, 주로 캐싱, 세션 저장소, 메시지 브로커로 사용됩니다. 모든 데이터를 메모리에 저장하므로 매우 빠른 속도로 데이터를 읽고 쓸 수 있으며, 다양한 데이터 구조(리스트, 셋, 해시 등)를 지원합니다. 주요 특징:인메모리 데이터베이스: 데이터가 메모리에 저장되어 초고속 접근이 가능합니다.다양한 데이터 구조 지원: 단순한 키-값뿐만 아니라, 리스트, 셋, 해시, 정렬된 셋 등 다양한 구조를 지원합니다.영속성 옵션: 데이터의 영속성을 위해 디스크에..
[Spring Boot] Spring JPA Entity 연관관계 및 즉시로딩, 지연로딩 Spring JPA Entity 연관관계 및 즉시로딩, 지연로딩개요Spring Data JPA는 엔티티 간의 연관관계를 설정하고 관리하는 강력한 기능을 제공합니다. 엔티티 간의 연관관계는 데이터베이스의 테이블 간의 관계와 유사합니다. JPA에서는 엔티티 간의 관계를 맵핑하고, 데이터 로딩 방식을 제어할 수 있는 다양한 옵션을 제공합니다. 이 글에서는 JPA의 엔티티 연관관계와 즉시로딩(Eager Loading), 지연로딩(Lazy Loading)에 대해 자세히 설명하겠습니다.목차엔티티 연관관계 개념연관관계 유형연관관계 매핑 예제즉시로딩과 지연로딩로딩 전략 선택 시 고려사항예제 코드요약 1. 엔티티 연관관계 개념 엔티티 연관관계는 데이터베이스 테이블 간의 관계를 엔티티 객체 간의 관계로 매핑한 것입니다. ..
[Spring Boot] 엔티티 관리와 영속성 컨텍스트: Spring Data JPA와 @Transactional 개요Spring Data JPA와 같은 ORM 프레임워크에서는 엔티티(Entity)를 관리하는 데 있어 영속성 컨텍스트(Persistence Context)가 중요한 역할을 합니다. @Transactional을 사용해왔지만 개념을 좀 더 잡기 위해 글을 작성하도록 했다.  영속성 컨텍스트란?영속성 컨텍스트는 엔티티의 상태를 관리하는 JPA의 메커니즘입니다. 이는 엔티티를 저장하고, 수정하고, 삭제하는 등의 작업을 수행할 때 JPA가 사용하는 가상의 데이터 저장소라고 할 수 있습니다. 영속성 컨텍스트는 엔티티 매니저(EntityManager)에 의해 관리됩니다.  영속성 컨텍스트의 주요 역할엔티티 저장: 데이터베이스에서 조회된 엔티티나 새로 생성된 엔티티를 영속성 컨텍스트에 저장.변경 추적: 영속성 컨텍스..
[Spring Boot] Spring Security @EnableMethodSecurity 설명 및 예제 설명@EnableMethodSecurity는 Spring Security의 메서드 수준 보안을 활성화하는 데 사용되는 어노테이션입니다. 이 어노테이션을 통해 특정 메서드 또는 클래스에 접근 제어를 적용할 수 있습니다. @EnableMethodSecurity는 다양한 메서드 보안 어노테이션(@PreAuthorize, @PostAuthorize, @Secured 등)을 사용할 수 있게 해줍니다.주요 기능@PreAuthorize: 메서드가 호출되기 전에 접근을 허용할지 결정합니다.@PostAuthorize: 메서드가 호출된 후에 접근을 허용할지 결정합니다.@Secured: 특정 롤(role)로 접근을 제한합니다.@RolesAllowed: 특정 롤(role)로 접근을 제한합니다 (JSR-250). 예제 다음은 ..
[Spring Boot] @Component와 @Configuration의 특징과 차이점 @Component특징스캔 대상: @Component 어노테이션이 적용된 클래스는 Spring의 컴포넌트 스캔에 의해 자동으로 빈으로 등록됩니다.기능: @Component는 특별한 기능 없이 단순히 빈으로 등록되는 클래스에 사용됩니다.하위 어노테이션: @Component는 @Repository, @Service, @Controller와 같은 특정 목적을 가진 어노테이션들의 기본 어노테이션입니다.사용 예제import org.springframework.stereotype.Component;@Componentpublic class MyComponent { public void doSomething() { System.out.println("Doing something in MyCompone..
[Spring Boot] BCrypt, SCrypt, Argon2 비밀번호 암호화 기법 BCrypt, SCrypt, Argon2 비밀번호 암호화 기법1. BCrypt특징안전성: 반복적인 해시 함수를 사용하여 공격에 견딜 수 있도록 설계됨.적응성: 비용 인자(cost factor)를 조정하여 처리 시간을 증가시켜 공격 난이도를 조정할 수 있음.견고성: 레인보우 테이블 공격에 강함.장점CPU를 많이 사용하여 브루트 포스 공격을 방어함.비용 인자를 조정하여 해시 계산 시간을 늘려 보안을 강화할 수 있음.단점메모리 사용량이 적어 현대의 GPU 공격에 상대적으로 취약할 수 있음.2. SCrypt특징안전성: 메모리와 CPU를 모두 많이 사용하는 설계로, 병렬 공격을 어렵게 만듦.적응성: 메모리 및 CPU 사용량을 조정하여 공격 난이도를 조정할 수 있음.견고성: 기존의 해시 공격 기법들에 대해 강력한 ..
[Spring Boot] JWT, JWS, JWE 개념 및 차이점 JWT (JSON Web Token)JWT는 JSON 객체를 사용하여 두 당사자 간에 정보를 안전하게 전송하기 위한 컴팩트하고 자가 포함된 방식입니다. JWT는 주로 인증 및 정보 교환에 사용됩니다. JWS (JSON Web Signature)JWS는 JWT의 한 형태로, JSON 데이터를 디지털 서명하여 무결성을 보장합니다. 서명된 토큰은 원본 데이터의 변경 여부를 확인할 수 있습니다. JWS는 주로 인증에 사용됩니다. JWE (JSON Web Encryption)JWE는 JWT의 또 다른 형태로, JSON 데이터를 암호화하여 기밀성을 보장합니다. 암호화된 토큰은 데이터를 보호하고 인가된 수신자만이 내용을 볼 수 있도록 합니다. JWE는 주로 기밀 데이터 교환에 사용됩니다. 차이점 및 장단점 특성 JW..
[Spring Boot] @Value와 @ConfigurationProperties 차이점 Spring Boot에서 애플리케이션 설정 값을 외부에서 주입받아 사용하는 방법 중 두 가지 주요 방법은 @Value와 @ConfigurationProperties입니다. 이 두 가지 방법의 사용법과 차이점을 설명하겠습니다.@Value 사용법@Value 애노테이션은 주로 개별 속성 값을 주입받을 때 사용됩니다. 주입하려는 속성 값을 애플리케이션 설정 파일(application.properties 또는 application.yml)에서 정의한 후, 해당 값을 주입받을 필드에 @Value 애노테이션을 사용합니다.application.properties 또는 application.yml 파일에 설정 값 정의:# application.propertiesapp.name=MyAppapp.version=1.0.0# ..