Spring

Spring/JPA

[JPA / Spring] JPQL을 이용해서 Entity가 아닌 DTO를 반환하는 방법

예제 소스코드(Google Drive)https://drive.google.com/file/d/1YrsS9-sjHM4QSLhe-5GZsvcfVlvMI_Z9/view?usp=sharingapplication.property 파일 수정해서 DB 연결해서 테스트해 보실 수 있습니다. (소스코드에서는 xxx처리) JPQL을 이용해서 DTO를 반환??? JPA를 이용하는 경우, 특정 상황에서 Entity 전체가 아닌 일부 컬럼만을 가져오고 싶을 때, @Query 어노테이션 내에 작성하는 JPQL에서 Java 객체를 생성하는 코드를 추가하는 방법을 사용할 수 있다. Spring-data-jpa가 제공하는 JpaRepository 인터페이스를 이용할 것이고, 회원과 주문으로 구성된 간단한 예제이다.회원(MemberE..

Spring/Spring Boot

[DB / Spring ] @Transactional 세부 설정 - 격리 수준 / 전파 수준 설정

스프링 부트에서는 @Transactional 어노테이션을 이용하여 복잡한 트랜잭션 처리를 단순화한다. 클래스, 메서드 단위로 어노테이션을 추가할 수 있고, 스프링이 AOP를 통해 프락시를 도입하여 트랜잭션 처리를 모두 해결해 준다. @Transactional 세부 설정 트랜잭션의 세부 설정을 통해 상황별로 적절한 설정을 하여 성능을 최적화할 수 있다. @Transactional 세부 설정 종류 Isolation (격리 수준 설정) Propagation(전파 수준 설정) readOnly 속성 트랜잭션 롤백 예외 설정 time-out 설정 1. Isolation(격리 수준) 일관성이 깨지는 것을 어느 정도까지 허용하느냐에 대한 설정이다. 기본 설정은 DEFAULT이다. @Transactional(isolat..

Spring/Spring Boot

[Spring] 빈 스코프 (Bean Scope) / 싱글톤, 프로토타입 등

빈 스코프란? 스프링 빈은 기본적으로 싱글톤으로 관리된다. 그래서 스프링 컨테이너는 스프링 싱글톤 컨테이너라고 불리기도 한다. 그러나 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. "스코프"는 빈이 존재할 수 있는 범위를 뜻한다. 한마디로 빈 스코프는 빈이 존재할 수 있는 범위 또는 빈의 라이프사이클의 범위라고 생각할 수 있을 것 같다. 스프링은 아래와 같이 다양한 빈 스코프를 지원한다. 싱글톤 : default, 스프링 컨테이너의 시작부터 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 빈의 생성과 의존성 주입까지만 관여하고, 더 이상 관리하지 않는 짧은 범위의 스코프 웹 관련 스코프 : request, session, application 등 여러 스코프..

Spring/Spring Boot

[Spring] 빈 생명 주기 콜백 (Bean LifeCycle) @PostConstruct / @PreDestroy

Spring Bean LifeCycle Spring DI 컨테이너는 Bean으로 등록된 객체의 생명주기 관리를 위임받아서 관리하고, 객체가 필요한 곳에서 이 Bean을 의존성 주입받아서 사용할 수 있다. 스프링 컨테이너가 생성될 때 객체(Bean)를 생성하고 의존성을 주입하는데, 의존관계 주입 후 Bean을 초기화하고, 스프링 컨테이너를 종료하기 전에 객체를 소멸시켜야 한다. 객체의 생성과 초기화 분리 객체를 초기화 한다는 것은, 객체 생성 이외에 외부 커넥션을 연결하거나, 초기값을 등록하는 등의 여러 작업을 말한다. 이 과정을 생성자에서 진행해도 되지만, 객체 생성에 비해 초기화는 비교적 무거운 일을 수행하기 때문에 객체를 생성하는 부분과 초기화하는 부분을 명확하게 나누는 것이 좋다. 빈 생명주기 스프..

Spring/Spring Boot

[Spring] 의존성 주입 방법 (DI : Dependency Injection), 생성자 주입 / 필드 주입 / setter 주입, 생성자 주입을 사용하는 이유

DI : Dependency Injection (의존성 주입) 의존성 주입은 객체 간의 의존성을 줄이고 유지보수성을 높이기 위해 사용된다. Spring 컨테이너에 여러 컴포넌트를 Bean으로 등록하여 생명주기 관리를 위임하고, 이 Bean으로 등록한 객체를 주입받아서 사용할 수 있다. DI 덕분에 개발자가 객체 생성에 대한 부분을 신경 쓰지 않고 비즈니스 로직에만 집중할 수 있게 된다. 의존성 주입 방법 의존성 주입 방법은 4가지가 있다. 생성자 주입 Setter 주입 Field 주입 일반 메서드 주입 이 중, 생성자 주입을 가장 많이 사용하고 Spring에서 권장하는 방법이다. 생성자 주입 생성자를 통해 의존성을 주입하는 방법이다. 생성자 호출 시점에 딱 한 번만 호출되는 것이 보장된다. 불변, 필수 ..

Spring/Spring Security

[Spring Security / JWT] Spring Security - JWT 토큰 인증/인가

JWT을 이용한 인증, 인가 JWT 토큰은 특정 회원 정보를 담은 암호화된 문자열이다. 로그인 시에 이 JWT 토큰을 발행받고, 이 토큰을 클라이언트 측 (브라우저 등)에 보관하며 서버로의 모든 요청 Header에 이 토큰을 포함시켜서 요청한다. 서버에서는 모든 요청마다 Filter에서 이 토큰을 검증하고 사용 권한을 확인하고, 접근 거절 또는 허가를 하게 된다. 단순하다. 요약하자면 아래와 같다. 로그인 시 JWT 토큰 발행 클라이언트는 모든 요청 시 Header에 발급받은 토큰을 포함시킨다. 서버는 모든 요청을 받기 전, Filter를 통해 해당 토큰을 검증하여 권한 여부를 확인한다. 권한이 있으면 접근을 허가하고, 권한이 없으면 접근을 거부한다. JWT? 2023.11.26 - [Spring/Spr..

Spring/Spring Security

[Spring security] JWT 토큰이란?

JWT이란? JWT는 Json Web Token의 약자로, 웹에서 사용되는 JSON 형식의 토큰에 대한 웹 표준 규격이다. 주로 사용자의 인증, 인가 정보를 서버와 클라이언트 간에 안전하게 주고받기 위해 사용된다. JWT의 특징 웹 표준을 따르고 있다. URL-safe 하다. (URL에서 사용할 수 있는 문자로만 이루어져 있다.) 필요한 모든 정보를 하나의 객체에 담아서 전달하기 때문에 JWT 하나로 인증을 마칠 수 있다 JWT 구조 JWT 토큰은 헤더(header)와 페이로드(payload), 서명(signature) 세 부분으로 나누어지고, 각 부분이 ' . '으로 구분된다. 헤더(header) 토큰의 유형과 서명 알고리즘이 명시된다. { "alg" : "HS256", "typ" : "JWT" } 페..

Spring/Spring Security

[Spring Security] 스프링 시큐리티 SecurityContext에 직접 Authentication(PrincipalDetails) 넣기

REST API 방식에서의 Kakao Login과 SpringSecurity에 대한 글을 찾다가 들어오신 분을 위해 말씀드립니다. 이 글은 Thymeleaf를 통해 뷰를 구성하고, Spring MVC @Controller 방식의 formLogin과 KakaoLogin을 혼용하기 위한 방법에 대해 설명하고 있습니다. REST API 방식과는 많이 다른것으로 알고있으니 참고하세요! 이전 글.. Kakao Login API 사용하기 2023.10.15 - [Spring/SpringBoot] - [Spring] 카카오 로그인 API 사용 방법 [Spring] 카카오 로그인 API 사용 방법 Kakao Developers 이미지 설명에 각 이미지 내용에 대한 위치(경로) 적어뒀으니 참고해 주세요. 1. Kakao..

HSRyuuu
'Spring' 카테고리의 글 목록