일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- error
- Spring Security
- 에러
- 깃
- spring error
- git
- react 심플캡차
- 스프링
- 스프링 시큐리티
- 스프링 시큐리티 로그인
- react 자동입력방지
- Docker
- react 캡차
- 리액트 캡차
- react simple captcha
- maven
- build
- Security 로그인
- ChatGPT
- 리액트 심플캡차
- 젠킨스
- Spring Boot
- jpa
- react 상태
- spring security 로그인
- myBatis
- react captcha
- SpringBoot
- REACT
- CI
- Today
- Total
I can do it(Feat. DEV)
[Spring Boot] 디렉토리 변경 후 @Configuration 스캔 이슈 본문
1. 이슈 발생 상황
spring security를 사용하여 로그인 기능을 구현하려고 security config 클래스 파일을 생성하여
기본 로그인 기능까지는 만들었음.
그런데 프로젝트 디렉토리 구조를 변경해야 할 듯하여 전체적으로 수정을 진행함.
이해를 돕기위해 이런 식으로 구조가 되어 있었다고 가정하겠음.
그리고
이런식으로 구조를 변경했는데(실제 프로젝트는 아님)...
security로 만들었던 로그인 기능이 작동을 안 함(로그인이 안 되는 상황 발생)
뭔가 디렉토리 구조를 변경해서 문제가 생긴 지는 알겠는데 에러도 안 뜨고 상황도 애매하니
갓글에 검색하기에도 어려웠음.🤬
2. 이슈가 발생한 과정 및 이유
돌고 돌다 @Configuration이 작동을 안 하는 듯하여 찾아보니
@ComponentScan을 사용하여 package 범위를 지정할 수 있다는 것을 알게 됨.
기존 Spring 프로젝트에서는 security.xml 파일에 scan 패키지 범위를 지정했지만...
Spring boot 프로젝트에서는 따로 작성한 부분을 찾을 수 없었음.
즉, 내가 설정한 게 아니라 기본으로 설정되어 있는 것이었고,
처음 Spring boot 프로젝트를 만들면 자동으로 설정되어있는
@SpringBootApplication 이 어노테이션 안에
다양한 설정이 정의되어 있다는 것을 알게 됨.
실제로 application 클래스에 @SpringBootApplication 어노테이션을
컨트롤 누르고 클릭해 보면...
이런 식으로 설정이 되어있는 것을 볼 수 있음.
이중 아까 언급했던 @ComponentScan이 설정되어 있고,
내가 직접 ComponentScan 설정을 하지 않았다면
@SpringBootApplication 어노테이션이 정의된 곳이 base package가 된다는 것임.
필자는 디렉토리 구조를 변경하면서 introduce라는 패키지를 만들었고 그 과정에서
@SpringBootApplication 어노테이션이 정의된 곳인
ExamAppilication 클래스 파일이 security 설정파일과 분리되어
@Configure 어노테이션이 작동을 안 하였던 것이었음!!!!!!!!!!!!!🤦♂️
3. 해결방법
해결 방법은 다들 아시겠지만,
@SpringBootApplication 어노테이션이 정의된 곳인 ExamAppilication 클래스 파일을
최상위 경로로 옮겨주면 잘 작동함.(위 사진에서는 com 경로 밑으로 옮겨주면 작동함👍)
마치며
이번 상황뿐만 아니라 Spring boot 프로젝트는
초기 세팅을 빠르고 간편하게 할 수 있지만,
그만큼 설정을 자동으로 해주는 것이기에
만드는 개발자조차 모르는 설정도 되어있는 경우가 많다는 것을 알게 되었음.
default로 설정이 되어있다고 해서 그냥 넘겨버리면
이렇게 다른 곳에서 이슈를 만날 수 있으니 기본기를 충실히 해야겠음.🤗
이상 끝~~~!!
'개발자 모드 > 응용' 카테고리의 다른 글
[Mybatis] Pageable로 페이지 처리하기 (2) | 2023.12.27 |
---|---|
[Spring Data JPA]복합키 설정(PK가 2개 이상일 때) (0) | 2023.11.06 |
[토스페이먼츠] 개발환경에서 가상계좌 테스트하기 (2) | 2023.09.13 |
[Spring Boot]JSP 수정한 코드가 바로 적용 안될 때 (0) | 2023.08.31 |
[Spring Boot / React 프로젝트] classPath 설정 방법 (0) | 2023.05.15 |