Development/Java (72) 썸네일형 리스트형 [Spring Boot] There is no PasswordEncoder mapped for the id "null" 내 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 Su.. Spring Boot Controller Test 하다가 마주친 IllegalArgumentException 컨트롤러를 만들어서 Testcase 를 작성한 후에 성공할거라 믿고 돌려봤는데 IllegalArgumentException 이 발생했다.컨트롤러 코드와 테스트 케이스 코드는 각각 다음과 같다. UserController.java123456@GetMapping(value = "/users/{email}")public UserDto.Res getUser(@PathVariable @Valid final String email){ Optional users = userService.findByEmailValue(email); return new UserDto.Res(users.get());}Colored by Color Scriptercs UserControllerTest.java12345678910111213.. java.util.Date 쓰다 삽질한 내용.... 최근에 시간 관련 Data 를 가지고 삽질을 해서 간단히 적어본다. 상황은 이렇다. 테이블에 특정 Data 를 저장 하고 있었는데 colum 에 언제나 그렇듯 생성 날짜, 시간 형태의 컬럼이 존재하고 있었다. Timestamp type 이었고 Data 는 잘 insert 가 되는 상황이었다. 그런데 이상하게 나는 분명 UTC 기준으로 Data 가 insert 될거라 생각을 했는데 그게 아니었다. Local 기준으로 Data 가 들어가고 있었다. 그러다 보니 이 Data를 사용하는 곳에서 예상치 못한 오류가 발생했다. 123456@Testpublic void jodaTime(){ DateTime dateTime = new DateTime(DateTimeZone.UTC); System.out.println(.. [SpringBoot] Properties 우선순위 Spring Boot 에서 Properties 를 설정하는 방법에 대해서 알아보자. 우선 Properties 파일을 3개를 만들어 보았다.src/main/resources 하위에 application.properties, application-server1.properties, application-server2.properties 이렇게 3개의 파일을 만들었다. application.properties1234application-name: my applicatoinspring.output.ansi.enabled=alwayslogging.level.org.springframework.web=debugserver.port=9000cs application-server1.properties1server.po.. [SpringSecurity]Spring Reference 수정 백기선님의 Spring Boot 레퍼런스 동영상을 보다 보니 레퍼런스도 한번 쭉~~ 살펴볼 필요가 있겠다 싶은 생각이 들었다. 그럼 뭘 볼까? 라고 생각 하다가 Spring Security 를 보기로 결정 했다. 기간을 가지고 보는것은 아니고 그냥 처음부터 차근차근 정리 하면서 읽어보자라고 생각을 했다. 그런데 보다보니 약간 이상한게 있었다. 위 내용은 레퍼런스에 나오는 5.2장 HttpSecurity 부분이다. 이상하다고 생각한 부분은 "However ~~~~~" 단락이다. 대체 뭘 어떻게 한다는 의미인지 알수가 없었다. 대체 커스텀 로그인 페이지를 만들때 뭘 조심하라는건지. Url이 RESTFul 한데 뭘 어쩌라는건지. 그리고 정보 유출을 막기위해 Spring security 를 사용하는것이 뭐가 분.. [SpringBoot] @Mock, @MockBean 차이가 뭘까? 테스트 케이스를 작성하다가 좀 헷갈리는게 있었다. @Mock, @MockBean 차이가 뭐지??? 쓰긴 하고 있는데 알고 써야 하지 않을까라는 의문이 들었다. 그래서 찾아봤다. 먼저 Mock 객체를 선언할 때에는 2가지 방법이 있다. 1. 첫번째 : mock() 을 이용해서 선언 1 2 3 4 5 6 7 8 9 10 11 12 @RunWith(MockitoJUnitRunner.class) public class UserServiceTest { @InjectMocks private UserService userService; UserRepository userRepository = mock(UserRepository.class); @Test public void findByEmail_test(){ when.. [SpringBoot]Spring Boot Oauth login With Facebook 삽질기!!! https://spring.io/guides/tutorials/spring-boot-oauth2/ 위 사이트에 가면 Spring boot 를 이용해서 Oauth를 이용해서 Login 을 할 수 있는 샘플을 만들어볼 수 있다. 그래서 나도 해봤는데.. 그게 삽질의 시작이었다...Tutorial 자체는 그렇게 어렵지 않게 따라 할 수 있다. 따라하기가 어렵다면 Git에서 소스를 내려 받아서 해볼 수도 있다. 이제 이 Tutorial 을 진행하기 위해서 Facebook Developer 사이트에서 앱을 등록을 해야 한다. 그래야 Client Id 하고 Client Secret을 받을 수 있다. https://developers.facebook.com 위 사이트에 들어 가면 본인의 Facebook 계정으로 앱을.. 작성중-[SpringBoot] ClassPathResource 의 getFile() 사용시 FileNotFoundException 발생 ClassPathResource resource = new ClassPathResource(resourcePath);File file = resource.getFile(); 위와 같이 코드를 작성해서 로컬에서 실행했을 때에 아무 문제 없이 동작을 하던 것이 war File 로 배포한 후에 동작을 시켰을 때에 에러가 발생을 했다. class path resource [img/header.jpg] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/home/xxxxadmin/lib/xxxxxxxxx.war!/WEB-INF/classes!/img/header.jpg java.io.File.. [Spring-Data-JPA]Auditing을 추가해보자 테이블을 설계할때 항상 빠지지 않고 들어있는 컬럼이 있다. 바로 생성일자, 수정일자, 생성자, 수정자 컬럼이다. 거의 모든 테이블에 디폴트로 들어있는 컬럼이고 상당히 중요한(?) 정보이다. 그렇다 보니 도메인에도 항상 똑같은 컬럼이 존재하게 된다. 그런데 spring-data-jpa에 재미난 기능이 있다. 바로 생성일자, 수정일자, 생성자, 수정자 컬럼에 값을 자동으로 넣어주는 기능이다. Audit : 감시하다. 바로 spring-data-jpa 에서는 audit 기능을 제공하고 있다. 방법은 여러가지가 있다. 각 도메인에 @PrePersist, @PreUpdate 등을 붙여서 할수도 있다. 그런데 이게 단점이 각각의 도메인에 같은 컬럼이 정의되어있다는 것은 변하지 않는다는 것이다. 모든 도메인에 똑같이.. [Spring Security] Max Session 적용하기 기존 소스에 동시 로그인을 제어하기 위해서 Maxsession 설정을 넣어보았다. 1234567891011121314151617181920212223@Configurationpublic class ResourceSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .authorizeRequests() .antMatchers("/", "/login/**","/browser/**", "/error/**").permitAll() .antMatchers("/private/**").auth.. 이전 1 2 3 4 5 ··· 8 다음