반응형

 

최근 들어 자바 버전이 굉장히 자주 업데이트 되고 있다. 그러다 보니 새로운 기능에 대해서 아는게 별로 없구나라는 생각을 자주 했었다. 마침 이렇게 새로운 버전에 대해서 리뷰할 기회가 되서 공부를 하게 되었다. 

 

우선 이 책은 총 21개의 챕터로 구성이 되어있고 600 페이지가 넘어가는 책이다. 앞에서 부터 차근차근 읽기에는 끈기와 노력이 필요하다. 그래서 나도 처음에는 차근차근 읽어가다가 어느정도 기본 개념에 대한 내용을 파악하고 난 후에는 실제로 내가 회사에서 사용해 볼 수 있는 부분부터 읽어 나가기 시작했다. . 

 

단, 최소한 5장까지는 차례대로 읽어보는 것을 권하고 싶다. 왜냐하면 5장까지의 내용을 알아야 뒤에 나오는 내용을 파악하는데 좀 수월해 진다. 5장의 내용이 위에 보듯이 스트림에 관련된 내용이다. 내 기준에서는 새로운 기능(?) 중에서 가장 쉽게 접하고 많이 써먹을 수 있는 기능이 아닐까 생각이 되었다. 그래서 5장까지 읽어 보라 한것이다. 

 

 

내가 읽으면서 가장 좋았던 내용이다. 스트림을 저렇게 설명한 그림은 처음 보는것 같다. 각각의 단계별로 그림을 통해서 내부적으로 어떻게 동작하는지 그리고 결과는 어떤 타입인지 설명을 해줘서 이해하기가 쉬웠다. 저렇게 각각의 리턴을 생각해보면서 써본적이 없었는데 이제야 제대로 알고 쓸수 있게 되었다. 

 

 

날짜 부분도 내가 관심있어 하는 부분이었다. 로컬타임, UTC, 타임존, 썸머타임 등등. 그런데 날짜 관련 해서는 사용 예 보다는 메서드 위주로 설명이 되어 있어서 약간 아쉬웠다. 아마도 최근에 날짜나 시간 관련해서 사용할 일들이 많아져서 개념과 함께 예들을 많이 보면 좋겠다라는 생각이 든것 같다. 

 

앞에서도 말했듯이 이 책은 도큐먼트 같은 성격의 책이다. 앞장부터 정주행하기 보다는 내가 먼저 사용해볼수 있는 부분에 대해서 찾아가면서 읽고 공부하는게 더 효율적인 책이다. 그리고 버전 8, 9, 10 에서 추가 된 내용들도 설명을 해주기 때문에 그동안 미뤄놨던 기능들을 마치 All in One 같이 알아볼 수 있다. 그래서 자바의 새로 추가된 기능들에 대해서 한번 정도 정리해보고 싶거나 하는 개발자들에게 많은 도움이 될것 같다. 

 

728x90
반응형
반응형

내 github 에 있는 프로젝트들중 예전에 만들었던 건데 내용좀 다시 볼겸 수정을 하고 있었다. 

사실, 간단한거 빼고는 잘 작동을 안하는것 같다.

 

그래서 이번에 라이브러리 버전 업데이트 좀 할겸 소스를 수정을 했다.

 

Spring Boot 버전도 최신 버전으로 수정을 하고 Security 버전도 수정을 했다. 그리고 나서 간단히 로그인을 해보려고 하니 다음과 같은 에러가 발생했다.

 

There is no PasswordEncoder mapped for the id "null"

 

음.. ?

찾아보니 Spring Security 버전이 올라가면서 PasswordEncoder가 변경되면서 발생한 에러였다. 

The general format for a password is:

{id}encodedPassword

Such that id is an identifier used to look up which PasswordEncoder should be used and encodedPassword is the original encoded password for the selected PasswordEncoder. The id must be at the beginning of the password, start with { and end with }. If the id cannot be found, the id will be null. For example, the following might be a list of passwords encoded using different id. All of the original passwords are "password".

(출처 : https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released)

 

그래서 방법은 다음과 같다. (내가 가지고 있는 소스 기준이다. )

 

1. DB 에 password 값을 변경한다. 

 

생성되는 password 값에 "{noop}" 을 붙여서 저장을 한다. 

 

2. UserDetail 서비스를 새로 구현 하였다면 password 부분을 수정해준다. 

    public CustomUserDetails(Account account) {
        this.username = account.getLoginId();
        this.password = "{noop}" + account.getPassword();
    }

 

1번이나 2번이나 결과적으로 password 값 앞에 "{id}" 값을 넣어주면 된다는 의미이다.

 

728x90
반응형

+ Recent posts