Zero to Hero
Published 2021. 4. 28. 13:37
Spring Study 02 Programming

온라인 강의를 듣고 배운 점들을 기록한다.

 

Bcrpyt & BcryptPasswordEncoder

- Spring Security에서 제공하는 암호화 기법.

- 내부적으로 임의의 salt값을 이용해 평문을 다이제스트(암호문)로 변환한다.

- 즉 동일한 문자열에 대한 해시 결과가 매번 다르게 나온다.

- 그러므로 위 라이브러리에서 제공하는 해시 비교 메서드를 통해서 비교할 수 있다.

- Bcrpyt 라이브러리의 checkpw() 메서드를 통해 평문과 다이제스트를 비교할 수 있다.

- BcryptPasswordEncoder는 AuthenticationProvider의 인자 값(UserDetailServices, PasswordEncoder)의 PasswordEncoder의 구현체로 가장 사용 빈도가 높은 구현체다.

 

 

@ExceptionHandler

- @Controller, @RestController에서 발생한 특정 에러에 대해서 에러 발생 이벤트가 트리거 되었을 때 아래 메서드를 수행한다.

- Controller단에서 Errors 객체로 에러를 받거나, 커스텀 에러 클래스를 throw 할 때 로직을 구현할 수 있다.

- 보통 특정 에러가 발생했을 때 해당 에러에 대한 메시지를 담은 ResponseEntity를 정책에 따라 200, 400 형태로 반환할 때 사용한다.

 

@UtilityClass

- Lombok에서 제공하는 Spring Class 중 Utiliy(상수나 반복되는 메서드 등) Class에 명시하는 어노테이션

- 기본 생성자가 private으로 선언된다.

- 사실 사용하지 않는 경우도 있지만 컨벤션 룰에 따라서 사용해주면 클래스 정보에 대한 정보를 명시한다는 점에서 사용할 법하다.

 

@AppilcationRunner

- Spring 프로젝트를 시동할 때 run 메서드를 오버라이드 해 해당 메서드를 수행한다.

- CommandLineRunner와 다르게 문자열 기반이 아닌 객체 대상의 작업을 할 때 사용한다.

- 예를 들면 In-Memory-DB인 H2를 사용할 때 초기 데이터 삽입을 위한 Entity 생성 및 Repository.save()를 할 때 사용한다.

 

JWT 라이브러리 관련

- maven repository에는 JWT관련 의존성이 많이 있다.

- 그중 가장 다운로드 횟수가 많은 JWT 의존성의 경우 토큰의 만료 기한을 입력하는 expiresAt에 Date 객체가 입력된다.

- 일반적으로 시간 관련된 내용은 LocalDateTime을 사용한다.(조작이 편함)

- 그래서 LocalDateTime 객체를 Date로 변환해서 사용해야 하는데 그 방법이 다양하다.

- 가장 편리한 방법(으로 보이는 방법)은 아래와 같다.

// LocalDateTime 으로 연산하고 Date로 바꿔서 넣어주기
LocalDateTime expiredDateTime = LocalDateTime.now().plusMonths(1);
Date expiredDate = java.sql.Timestamp.valueOf(expiredDateTime);

- 하지만 다른 JWT 의존성 중 LocalDateTime을 인자로 받는 의존성도 있는 것을 확인했다.(jjwt)

- Rule에 맞게 사용하면 될 것 같다.

 

@RequestHeader

- Controller단에서 Header 정보를 문자열로 받아볼 수 있는 어노테이션.

- JWT 검증에 대한 부분을 Controller에서 하려 할 때 주로 사용한다.(원래는 Controller 진입 전에 Filter로 해결하는 것이 일반적으로 알고 있다)

'Programming' 카테고리의 다른 글

Docker 03  (0) 2021.04.30
M1 맥북에서 Linux Ubuntu 사용하기 with AWS EC2  (0) 2021.04.29
Spring Study 01  (0) 2021.04.27
Docker 02  (0) 2021.04.23
Docker 01  (0) 2021.04.23
profile

Zero to Hero

@Doljae

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!