부트캠프 과정을 마치고 생각보다 빠르게 취업에 성공해서 기뻐한 것도 잠시... 게시판만 만들던 저에게 크나큰 시련이 찾아왔습니다.
바로 API설계..... 물론 만들어 본적은 있지만 짧은 기간에 많은 것을 배우다 보니 정확하게 이해하지 못하고 넘어간 부분이 많아 환경이 변하니 어떤 거부터 만들어야 할지... 막막해 다시 차근차근 공부해보려 합니다.
API 설계를 하려하니 우선 Spring Boot의 Auto Configuration에 대한 이해가 조금은 있어야 한다는 생각이 들었습니다.
이유는... 코드를 짜던중 컴포넌트로 인식을 못하는 상황이 생겼기 때문이죠... 그래서 준비한 이야기!! 지금부터 시작합니다.
컴포넌트 스캔 (Component Scan) 과 Auto Configuration
컴포넌트 스캔(Component Scan)
- 컴포넌트 스캔이란 스프링이 스프링 빈(Bean)으로 등록될 준비가 된 클래스들을 스캔하여 빈(Bean)으로 등록해주는 과정을 말한다.
- @Component 어노테이션이 붙어있는 클래스들은 전부 컴포넌트 스캔의 대상이 된다.
- @Configuration, @Service, @Repository, @Controller, 등의 어노테이션에도 전부 @Component이 포함되어 있어 자동으로 컴포넌트 스캔의 대상이 된다.
@ComponentScan과 컴포넌트 스캔 범위
- 컴포넌트 스캔을 사용하기 위해서는 설정 정보 클래스에 @ComponentScan 어노테이션을 붙여줘야 한다. 이때 컴포넌트 스캔의 범위는 설정 정보 클래스의 패키지를 포함한 모든 하위 패키지가 된다. 이때 모든 자바 클래스를 다 컴포넌트 스캔하면 시간이 오래 걸릴 수 있다. 따라서 아래와 같이 꼭 필요한 위치부터 탐색을 시작하도록 할 수 있다.
⭐참고로, 스프링 부트를 사용하면 스프링 부트의 대표 시작 정보인 @SpringBootApplication를 프로젝트 시작 루트 위치에 두는 것이 관례이다. @SpringBootApplication 어노테이션에 @ComponentScan이 들어있기 때문에 하위 패키지 모두 컴포넌트 스캔의 대상이 된다.
Auto Configuration
- Spring Boot의 auto-configuration은 추가한 jar 파일에 따라 자동적으로 설정을 해줍니다.
- 데이터베이스의 커넥션을 맺는 Bean을 수동으로 구성해주지 않았다면 , 자동으로 인메모리 DB로 자동 구성해주기도 한다.
😒<Spring Legacy 였다면 Connection 오류가 뜨고 난리가 날것이다…>
- Auto-configuration을 사용하고 싶다면 @EnableAutoConfiguration 또는 @SpringBootApplication주석을 @Configuration 클래스 중 하나에 추가하면 됩니다 보통은 Spring Boot를 새로 만들면 Application 클래스가 생성됩니다
😉@SpringBootApplication 또는 @EnableAutoConfiguration 주석을 하나만 추가해야 합니다.
🎈참고
https://code-lab1.tistory.com/170
https://donghyeon.dev/spring/2020/08/01/스프링부트의-AutoConfiguration의-원리-및-만들어-보기/
'Spring Boot API' 카테고리의 다른 글
Exception (0) | 2022.08.16 |
---|---|
문제야 어디 있니~? LogBack (0) | 2022.08.10 |
@Valid 의 종류 알아보기 (0) | 2022.08.10 |
@SpringBootApplication 이 정상적으로 기능하지 못한 이유 (0) | 2022.08.09 |