전체 글(228)
-
[Spring JPA] 영속성 컨텍스트의 기능
본 포스팅은 영속성 컨텍스트의 4가지 기능을 다룹니다. 영속성 컨텍스트란? 영속성 컨텍스트는 Spring JPA의 Entity 객체를 관리하기 위해 만들어진 공간 영속성 컨텍스트에 저장하기 위해 Entity Manager 객체가 persist 메소드를 호출해야함. Entity Manager는 @PersistenceContext를 통해 의존성 주입을 받을 수 있음 영속성 컨텍스트에 저장한 후, commit메소드를 호출해야 db에 반영이됨. 트랜잭션이란? 트랜잭션은 DB 데이터들의 무결성과 정합성을 유지하기 위한 하나의 논리적 개념 여러 개의 쿼리들이 하나의 트랜잭션에 포함될 수 있고, 여러 개의 쿼리들을 모아 한 번에 db에 반영함. 모든 쿼리들이 성공적으로 수행되면 영구적으로 db에 변경을 반영하지만, ..
2024.03.07 -
[QueryDSL] 최신! 환경설정
본 포스팅은 QueryDSL-JPA의 환경설정을 다룹니다. 문제 상황 김영한님 QueryDSL 강의 듣고 있는데, 강의에서 제공해준 메뉴얼대로 아래와 같이 gradle을 작성했는데 빌드가 제대로 안됨. plugins { id 'java' id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral..
2024.03.06 -
[Spring Security] 최신! AccessDeniedHandler, AuthenticationEntryPoint 사용하기
본 포스팅은 Spring Security에서 AccessDeniedHandler, AuthenticationEntryPoint 구현체를 이용하는 것을 다룹니다. 문제 상황 로그인하지 않은 사용자(HTTP STATUS CODE 401), 접근 권한이 없는 사용자(HTTP STATUS 403)가 있을 때, 해당 정보를 ResponseBody에 넘겨주고 싶음. 다른 에러들은 에러가 발생했을 때, CustomException을 정의해서 처리를 했었는데, 위의 401, 403 에러들은 Custom Exception으로 잡으려고해도 잡히지 않았음. 그것은 아래와 같이 controller보다 Security Filter Chain이 먼저 동작하기 때문임. 시도한 방법 Global Exception에서 잡으려고 시도함..
2024.03.06 -
스웨거로 작업한 API를 html 문서로 저장하기
본 포스팅은 스웨거로 작업한 API를 html 문서로 저장하는법을 다룹니다. 1단계 http://localhost:8080/swagger-ui/index.html#/ 로 접속해 제목 아래에 있는 링크로 접속한다. 2단계 출력되는 json을 저장한다. 3단계 https://editor.swagger.io/로 접속해 방금 만든 json 파일을 import한다. 4단계 html로 export한다. 에러발생 간혹가다 export가 안되는 경우가 있는데, 그때는 requestdto, responsedto쪽 Schema 어노테이션을 수정하면 된다!
2024.03.06 -
[Spring Security] URI에 따라 접근 권한 부여하기 최신 버전
본 포스팅은 Spring Security에서 URI별로 접근 권한을 다르게 부여하는 최신 방법을 다룹니다. chatGPT에게 물어보면 아래와 같이 대답해줍니다. 하지만, 이는 deprecated된 방법이므로 최신 방법으로 사용해야합니다. 이전 방법 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.sessionManagement((sessionManagement) -> sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests((authorizeHttpRequests) -..
2024.03.05 -
[Spring Security] 최신! 로그인 결과를 ResponseBody에 나타내는 법
본 포스팅은 Spring Security에서 로그인 결과를 ResponseBody에 나타내는 법을 다룹니다. 문제 상황 Spring Security를 이용하여 인증 및 인가를 진행하고, JWT를 인증방식으로 사용하여 UserDetails, UserDetailsService를 상속받아서 사용하고 있음. 아래와 같이 로그인을 구현할 때, Swagger ResponseBody에 아무것도 표현되지 않는 상태 @Operation(summary = "유저 로그인", description = "유저 로그인 사용할 정보를 입력합니다.") @PostMapping("/user/login") public ResponseEntity login(@RequestBody LoginRequestDto requestDto) { try..
2024.03.05