반응형

Back-end 75

[Spring] JPA Query 메서드 DTO 바로 생성하기

Spring Data JPA를 사용하여 데이터베이스에서 정보를 가져올 때 DTO(DTO: Data Transfer Object)를 사용하는 경우가 많습니다. DTO는 보통 데이터베이스의 엔티티(Entity)와 클라이언트 간의 데이터 전송을 위해 사용됩니다. 이 글에서는 Spring Data JPA에서 Query 메서드를 사용하여 DTO를 바로 생성하는 방법을 알아보겠습니다. 1. DTO 클래스 생성 DTO 클래스는 데이터 전송을 위한 객체입니다. 먼저 DTO 클래스를 생성해야 합니다. 예를 들어, 장바구니에 담긴 상품 정보를 전달하기 위한 CartItemListDto 클래스를 만들어봅시다. package com.example.demo_mall.mallapi.dto; public class CartItem..

Back-end/Spring 2024.04.07

[Spring] Security CSRF 비활성화 (6.1 버전 이상)

0. 먼저 CSRF란? CSRF(Cross-Site Request Forgery, 사이트 간 요청 위조)는 웹 보안 취약점 중 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 조작한 요청을, 신뢰할 수 있는 사이트에 대해 보내도록 만드는 공격입니다. 이 공격은 사용자가 해당 사이트에 로그인한 상태에서 이루어지면, 사용자의 권한을 이용하여 악의적인 변경사항(예: 비밀번호 변경, 무단 게시물 작성 등)을 적용할 수 있습니다. 1. CSRF 비활성화 방법 (시큐리티 6.1버전 이상) 스프링 시큐리티 6버전부터는 보안 구성 방식에 몇 가지 변화가 있습니다. CSRF 보호를 비활성화하는 방법에도 변화가 있을 수 있으며, 새로운 방식을 적용해야 할 필요가 있습니다. 스프링 시큐리티 6버전에서 CSRF 보호를 비..

Back-end/Spring 2024.02.09

[Spring] @RestControllerAdvice 사용해서 Controller 예외처리

1. @RestControllerAdvice 사용해서 Controller 예외처리 @RestControllerAdvice 어노테이션은 Spring Framework에서 예외 처리를 위해 사용되는 특별한 클래스에 붙이는 어노테이션입니다. 이 어노테이션을 사용하면 전역에서 발생할 수 있는 예외를 캡처하고, 공통된 예외 처리 로직을 적용하여 API 응답을 일관성 있게 관리할 수 있습니다. @RestControllerAdvice는 @ControllerAdvice에 @ResponseBody가 추가된 형태로, REST API 개발 시 JSON 등의 응답 바디를 직접 제어할 수 있게 해줍니다. 1-1. 동작 방식 Spring의 AOP(Aspect-Oriented Programming)를 이용하여, 애플리케이션의 컨트..

Back-end/Spring 2024.02.09

[Spring] @SuperBuilder 의 특징과 간단한 예제

@SuperBuilder 의 특징과 간단한 예제 @SuperBuilder는 Project Lombok 라이브러리의 어노테이션 중 하나로, 상속 구조를 가진 클래스에서 빌더 패턴을 쉽게 사용할 수 있게 해줍니다. 일반적인 @Builder 어노테이션과 달리 @SuperBuilder는 부모 클래스와 자식 클래스 간의 상속 관계를 고려하여 빌더를 생성합니다. 이를 통해 각 클래스의 필드를 초기화하는 데 필요한 빌더 메소드를 자동으로 생성해줍니다. 1. @SuperBuilder의 장점 상속 구조 지원: 상속 구조에서도 빌더 패턴을 쉽게 구현할 수 있게 해줍니다. 부모 클래스의 필드와 자식 클래스의 필드를 모두 한 번에 설정할 수 있는 빌더 클래스를 생성합니다. 타입 안전성: 빌더 패턴을 사용함으로써 객체를 생성할..

Back-end/Spring 2024.02.09

[Spring] DTO 간 복사(BeanUtils, ModelMapper커스텀 하는방법 포함)

DTO 간 복사 Spring에서 DTO 간 변수를 복사하는 경우, 주로 BeanUtils.copyProperties 메소드를 사용하거나 ModelMapper 라이브러리를 활용할 수 있습니다. 아래에 두 방법을 사용하는 예시를 제시하겠습니다. 1. BeanUtils 사용하기 BeanUtils.copyProperties 메소드는 스프링 프레임워크에 포함된 유틸리티 메소드로서, 한 객체의 프로퍼티 값을 다른 객체로 복사하는 데 사용됩니다. 이 방법은 추가적인 라이브러리를 필요로 하지 않으며, Spring Framework에 기본적으로 포함되어 있습니다. import org.springframework.beans.BeanUtils; // Source DTO public class SourceDto { priva..

Back-end/Spring 2024.02.09

[Spring] 시큐리티 예외 처리와 사용자 인증 (시큐리티6 이상)

스프링 시큐리티는 애플리케이션의 보안을 강화하고, 다양한 상황에서의 인증 및 권한 부여를 관리합니다. 오늘은 스프링 시큐리티의 exceptionHandling() 메서드를 활용한 예외 처리 방법과 사용자 인증 과정에 대해 알아보겠습니다. 예외 처리 설정 (exceptionHandling()) 스프링 시큐리티에서 예외 처리는 보안 관련 예외가 발생했을 때 적절한 대응을 할 수 있도록 돕습니다. 대표적으로 두 가지 핸들러를 설정할 수 있습니다. 1. AuthenticationEntryPoint (인증 진입점) .exceptionHandling(xh -> xh .authenticationEntryPoint(new AuthenticationEntryPoint() { @Override public void com..

Back-end/Spring 2024.01.30

[Spring] Security 6 버전 인메모리 사용자 설정 간단한 예제

권한 설정과 표현식 Spring Security 5에서는 **AuthenticationManagerBuilder**를 사용하여 메모리 인증을 설정할 수 있었지만, Spring Security 6에서는 몇 가지 변경이 있을 수 있습니다. 1. PassworEncoder 사용 필수 먼저, Spring Security 6에서는 비밀번호 암호화에 대한 설정이 강화되었으므로 **{noop}**을 사용하는 것이 더 이상 권장되지 않습니다. 대신에 비밀번호 인코더를 명시적으로 지정해야 합니다. 그래서 아래와 같이 PasswordEncoder를 빈으로 등록하는 소스코드를 먼저 작성합니다. @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswor..

Back-end/Spring 2024.01.30

[Swagger] Spring 3.0 이상 버전에서 스웨거 적용하는 방법

0. 기존 SpringFox로 설치할 경우 발생하는 문제 기존 방법대로 springfox 스웨거를 implementaion하면 에러가 발생합니다. 기존 방식 implementation 'io.springfox:springfox-swagger2:2.9.2' implementation 'io.springfox:springfox-swagger-ui:2.9.2' 기존 방식대로 했을 경우 아래와 같은 에러가 발생하는 것을 확인 할 수 있습니다. print 결과 Action: Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.plugin.core.suppor..

Back-end/Spring 2024.01.29

[EC2] mysql 설치시 conflicting requests 발생 해결방법

0. 문제 상황 EC2: Amazon Linux 2023 환경에서 mysql을 설치하려고 하니 에러문구 Error: Problem: conflicting requests 이라는 문구와 함께 아래처럼 에러가 발생했습니다. 1. 해결방법 지원하지 않는 버전의 설치를 진행했기 때문입니다. 아래의 명령어로 다시 설치 진행해보시면 정상 진행됩니다. 해결방법 sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo dnf install mysql-community-server

Back-end 2024.01.29

[Spring] Access-Control-Allow-Origin header is present 해결방법

"Access-Control-Allow-Origin" 헤더가 브라우저에서 발생하는 보안 정책 중 하나입니다. 이 헤더는 웹 페이지가 다른 도메인에서 리소스를 요청할 때 CORS(Cross-Origin Resource Sharing) 정책을 적용하도록 브라우저에 지시합니다. 로컬 테스트 서버에서 이 에러가 발생한다면, 보통은 서버 측에서 CORS를 허용하지 않아서 발생합니다. 해결하기 위해서는 서버에서 CORS 정책을 설정해야 합니다. Spring Boot에서는 아래와 같은 방법들로 해결할 수 있습니다. Spring Boot에서 CORS를 허용하려면 다음과 같이 설정할 수 있습니다. application.yml 설정 @CrossOrigin 애노테이션 사용 1. application 설정 예를 들어, 모든 ..

Back-end/Spring 2024.01.27
반응형