BE/Spring9
-
[Spring JPA] 영속성 컨텍스트의 기능
본 포스팅은 영속성 컨텍스트의 4가지 기능을 다룹니다. 영속성 컨텍스트란? 영속성 컨텍스트는 Spring JPA의 Entity 객체를 관리하기 위해 만들어진 공간 영속성 컨텍스트에 저장하기 위해 Entity Manager 객체가 persist 메소드를 호출해야함. Entity Manager는 @PersistenceContext를 통해 의존성 주입을 받을 수 있음 영속성 컨텍스트에 저장한 후, commit메소드를 호출해야 db에 반영이됨. 트랜잭션이란? 트랜잭션은 DB 데이터들의 무결성과 정합성을 유지하기 위한 하나의 논리적 개념 여러 개의 쿼리들이 하나의 트랜잭션에 포함될 수 있고, 여러 개의 쿼리들을 모아 한 번에 db에 반영함. 모든 쿼리들이 성공적으로 수행되면 영구적으로 db에 변경을 반영하지만, ..
2024.03.07 -
[Spring Security] URI에 따라 접근 권한 부여하기 최신 버전
본 포스팅은 Spring Security에서 URI별로 접근 권한을 다르게 부여하는 최신 방법을 다룹니다. chatGPT에게 물어보면 아래와 같이 대답해줍니다. 하지만, 이는 deprecated된 방법이므로 최신 방법으로 사용해야합니다. 이전 방법 @Bean public SecurityFilterChain securityFilterChainHttpSecurityhttp throws Exception { http.sessionManagement(sessionManagement -> sessionManagement.sessionCreationPolicySessionCreationPolicy.STATELESS) .authorizeHttpRequests(authorizeHttpRequests -..
2024.03.05 -
[Spring Security] 최신! 로그인 결과를 ResponseBody에 나타내는 법
본 포스팅은 Spring Security에서 로그인 결과를 ResponseBody에 나타내는 법을 다룹니다. 문제 상황 Spring Security를 이용하여 인증 및 인가를 진행하고, JWT를 인증방식으로 사용하여 UserDetails, UserDetailsService를 상속받아서 사용하고 있음. 아래와 같이 로그인을 구현할 때, Swagger ResponseBody에 아무것도 표현되지 않는 상태 @Operationsummary = "유저 로그인", description = "유저 로그인 사용할 정보를 입력합니다." @PostMapping"/user/login" public ResponseEntity login@RequestBody LoginRequestDto requestDto { try..
2024.03.05 -
[Spring] Failed to load remote configuration.
본 포스팅은 Swegger 사용 중 접근 허가와 관련된 에러인 "Failed to load remote configuration"에 대해 다룹니다. 에러 화면 Spring Security는 spring 서버에서 인증 및 인가를 다뤄주는 라이브러리입니다. Spring Security를 이용하여 인증 및 인가를 처리하고 swegger를 이용하려고 했을 때, 아래와 같은 화면이 뜨고 403 에러가 발생하는 것을 알 수 있었습니다. 설정들 swagger를 사용하기 위해 application.properties에 아래와 같이 추가하고 gradle에 의존성 추가할 때, 스프링 부트가 3.0 버전이상이라 아래와 같이 추가해주었습니다. 그리고 SwaggerConfig 파일에 아래와 같이 @Configuration pu..
2024.03.01 -
[Spring] 의존성 주입DI과 제어의 역전IoC
본 포스팅은 의존성 주입DI과 제어의 역전IoC에 대해 다룹니다. 의존성Denpendency 'A가 B에 의존성을 가진다'라는 뜻은 B가 변할 때마다 A도 함께 변해야하는 것을 말합니다. 아래의 예시를 보겠습니다. 아래의 예시에서 comsumer가 eat 메소드를 호출하면, chicken 객체의 eat 메소드가 호출됩니다. 코드 동작상으로는 문제가 없지만, 다른 음식을 먹고 싶으면 eat 메소드를 수정해야하는 번거로움이 있습니다. 위와 같은 경우 Consumer와 Chicken은 강한 의존성을 가진다라고 말할 수 있습니다. # Code Snippet 1 public class Consumer { void eat { Chicken chicken = new Chicken; chicken.e..
2024.02.25 -
[Spring] 초간단! 인자의 종류
본 포스팅은 메소드의 인자로 쓰이는 @PathVariable, @RequestParam, @RequestBody에 대해 다룹니다. @PathVariable @PathVariable은 URI Path로부터 값을 얻을 때 쓸 수 있습니다. @RequestParam @RequestParam은 쿼리스트링으로부터 값을 얻을 때 쓸 수 있습니다. 내용 추가: Get method에서는 RequestBody로 인자를 받는 것이 허용되지 않음. @RequestBody @RequestBody는 JSON의 값을 인자로 받을 때, 사용합니다.
2024.02.24