SpringBoot
Springboot Log 남기기
Springboot Log 남기기
2022.06.01우선 Log를 사용하기 전에 무엇인지부터 알아보자. 1. Log란? 사전적 의미로는 It에서 발생되는 모든 행위와 이벤트 정보를 시간에 따라 남겨둔 데이터를 지칭한다. 간단하게 이야기하면, 로그는 일정의 표시이고, 기록입니다. 로그를 통해서 애플리케이션의 상태를 관찰할 수도 있고, 오류가 발생한 부분에 대해서 인지할 수 있습니다. 즉 로직의 흐름, 예외 등등을 파악할 수 있도록 인지하기 할 수 있고, 로그를 통해서 서비스의 품질을 관리할 수도 있습니다. 예를 들어서 서비스를 이용하는 사용자가 자주 사용하는 기능이라던지 혹은 사람들이 어떠한 게시물을 열람할 때 로그 남기도록 만들었습니다. 그렇다면 서비스를 제공하는 입장에선 로그라는 데이터를 이용해서 기능을 더 발전시키거나, 사용자의 니즈를 찾아 품질이 높..
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용
SpringBoot [스프링부트] Spring Security Oauth2 (6) Google Token 활용
2022.05.25이전에는 google에 인증을 마치면 Session을 생성해서 사용자의 인증과 인가를 처리했습니다. 이번에는 google이 제공하는 API인 Access Code와 Access Token으로 서버의 JWT 토큰을 발급하여 인증과 인가를 처리해보겠습니다. 진행하면서 삽질을 많이 했는데 그 부분에 대해서도 작성하겠습니다. 간단한 순서도를 보겠습니다. 1. 사용자가 로그인 요청 2. 서버는 Google API Server의 로그인을 하는 URI로 리디렉션 3. 로그인 성공 시 설정한 redirect-uri로 리디렉션 진행하며, Access Token을 발급받을 수 있는 Authorization code를 쿼리 파라미터 넘겨줌 4. Authorization code를 활용해서 Access Token 발급 요청 ..
Springboot MVC 파헤치기(13) Collection Validation 적용
Springboot MVC 파헤치기(13) Collection Validation 적용
2022.05.19이전에 객체에 대해서 Validation을 적용하는 방법에 대해서 알아봤습니다. 하지만 Collection형태로 넘어올 때 Validation이 동작하지 않습니다. 따라서 이번 포스팅은 Collection으로 넘어올 때도 마찬가지로 Validation이 동작하도록 코드를 만들겠습니다. 1. Collection Test 단일 객체는 이전에 확인을 했으므로 컬렉션으로 넘겼을 Validation이 동작하는지 확인하겠습니다. Controller 메서드 private final CustomValidator customValidator; @PostMapping("/validation/v7") public ResponseEntity validationV7(@Valid @RequestBody List dto){ ret..
Springboot MVC 파헤치기(12) ControllerAdvice 알아보기
Springboot MVC 파헤치기(12) ControllerAdvice 알아보기
2022.05.17ControllerAdvice 혹은 RestControllerAdvice가 하는 일은 Controller에서 발생한 예외를 받아 처리해주는 역할을 합니다. 저희는 이것을 어노테이션을 붙여주는 것만으로 사용할 수 있습니다. 간단한 예시를 보고, 어떻게 동작하는지 살펴보겠습니다. 1. ControllerAdvice 예시 @RestControllerAdvice(basePackages = "gugus.pleco.domain") public class ControllerAdvice { @ExceptionHandler(UserDuplicatedException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public ErrorDto duplicate1(UserDuplicate..
Spring-Data-JPA [6] Index 적용하기
Spring-Data-JPA [6] Index 적용하기
2022.05.16Database의 성능을 높이기 위한 여러 가지 방법들이 있습니다.(Index, 반정 규화, 클러스터링 등등) 이번에는 Index에 대해서 알아보겠습니다. 1. Index란? Index란 추가적인 작업들을 통해서 테이블에서 데이터의 조회 속도를 향상시켜줄 수 있는 자료구조입니다. (시켜줄 수도 있다는 것은 Index를 잘못 사용했을 때 생기는 문제점입니다.) 말 그대로 Index는 색인입니다. 책이나 잡지를 볼 때 원하는 내용을 찾을 때 모든 페이지를 살펴본다면 오랜 시간이 소요됩니다. 하지만 책이나 잡지에는 색인을 추가해서 내용을 찾을 수 있도록 도움을 줍니다. 데이터베이스에 Index 또한 같은 역할을 합니다. 예시 사진을 보겠습니다. Member_Id는 정렬돼 있고, 자신만의 포인트를 가지고있습니다..
Springboot[스프링부트] Spring Security Basic(5) 동작 과정
Springboot[스프링부트] Spring Security Basic(5) 동작 과정
2022.05.13Spring Security의 Filter, Provider, Handler를 직접 구현해봤습니다. 이번에는 이러한 동작들이 실행되는 과정을 살펴보겠습니다. 위와 같은 이미지로 Security Basic(0)에서 한 번 다룬 적이 있습니다. 이번엔 어떤 과정을 거치는지 살펴보겠습니다. 저희가 Custom 하게 만든 CustomAuthenticationFilter를 포함해서 여러 가지 필터들이 있습니다. 필터들이 서로 연결돼 다음 필터를 호출하는 형태입니다. 그중에서 FilterChain을 상속받고, ThreadLocal로 ServletRequest, ServletResponse를 ApplicationFilterChain이 있습니다. 이것은 필터들의 시작점이며, 위에서 말씀드린 것처럼 필터를 호출해서 시작..