728x90

Web/Spring 4

[Spring] Thead간 SecurityContextHolder 공유하기

사용자의 정보가 수정이 될 때 SecurityContext의 인증 정보도 같이 업데이트해주도록 코드를 수정하고 있었다. 사용자 정보 수정 페이지에서 인증 정보를 불러와 set 해주는 부분에서는 문제가 발생하지 않았는데, 스레드를 생성해 여러 사용자의 정보를 수정하는 부분에서는 SecurityContext가 null인 것을 확인하였다. 찾아보니 Spring Security의 SecurityContextHolder의 전략(strategy)은 기본적으로 MODE_THREADLOCAL로 되어있다고 한다. SecurityContextHolder에서 제공하는 전략은 1. MODE_THREADLOCAL: 동일한 thread 내에서만 SecurityContextHolder가 공유 2. MODE_INHERITABLETH..

Web/Spring 2022.07.13

[Spring] org.springframework.beans.factory.BeanCreationException, org.springframework.beans.factory.NoSuchBeanDefinitionException 해결하기

회사에 입사 후 처음으로 Spring Framework를 알게 되었고, 그 이후로도 제대로 Spring Framework를 공부한 적 없는 나에게는 가끔 이런 문제 같지도 않은 문제를 만나게 된다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name '클래스명': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private 클래스경로; nested exception is org.spring..

Web/Spring 2022.02.04

[Spring] static 필드에 @Autowired(의존성 주입) 사용하기

겉으로 보기에는 이상이 없는 코드였는데 (물론 이건 내가 실력이 없고 무지했기에 아무런 이상이 없는 코드처럼 보였던 것이다.) NullPointerException이 뜨며 에러가 뜨는 상황이 발생했다. 그래서 디버그 모드로 들어가 하나씩 살펴보던 중 이상한 부분을 발견했다. 바로 @Autowired를 사용한 service 혹은 dao가 null을 저장하고 있었다. null을 저장하고 있던 필드는 static으로 선언된 정적 필드였는데, 이 상황에서 내가 생각했던 것은 정적 필드는 @Autowired를 사용하지 못한다는 생각이었다. 찾아보니 역시나 정적 필드는 @Autowired를 사용할 수 없었고, 이 부분을 모두 바꾸려면 일정을 맞추지 못할 것 같기에 static 필드에 @Autowired를 사용하는 ..

Web/Spring 2021.09.29

[Spring Boot] Spring Boot 실행 포트(Port) 변경하기

application.properties에 server.port={원하는 포트 번호}를 적어 준다. 지금까지는 Spring 5도 아닌 Spring 4 버전을 다루다가 이제는 Spring Boot를 배워야겠다는 생각이 들어 Spring 공식 페이지를 보고 Spring Boot를 배우려고 했다. 근데 이미 8080포트는 사용 중이기 때문에 포트를 바꾸려고 환경 설정을 찾아보아도 포트 번호를 바꾸는 부분이 보이지 않았다. 찾아보니 Spring Boot Starter Web을 사용하는 경우에는 내장 tomcat이 존재하기 때문에 application.properties에 server.port를 적어 설정해 주어야 했다. src > main > resources에 있는 application.properties에 ..

Web/Spring 2021.09.03
728x90