티스토리 뷰
SpringBoot를 이용해서 프로젝트를 진행하다가 SpringBoot는 어떻게 별도의 설정 없이 구동이 되는지 궁금하여 찾아보게 되었다.
SpringBoot는 프로젝트를 생성 시 사용할 옵션을 선택하여 프로젝트가 생성되며,
Spring Boot App을 실행하면 별도의 설정 없이 기본적으로 사용할 옵션이 설정되어 프로젝트가 구동이 된다.
이때 어떻게 자동으로 설정이되는지 확인해보았다.
우선 프로젝트를 생성하면 pom.xml에 아래와 같이 선택한 옵션에 대한 Dependency를 확인할 수 있다.
위와 같이 보통은 "spring-boot-starter-선택옵션명" 규칙으로 생성되며 해당 Dependency로 필요한 의존성과 설정을 자동화한다.
Spring Boot App을 실행하면 "@SpringBootApplication" 어노테이션을 찾아 실행을 하며
"@SpringBootApplication"에서 F3을 누르면 해당 어노테이션을 선언한 class 파일로 이동할 수 있다.
이동한 class파일의 상단에서는 아래와 같은 어노테이션을 확인할 수 있다.
선언된 어노테이션중 주요 확인할 어노테이션은 아래 3가지다.
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
그중 자동화 설정은 @EnableAutoConfiguration 어노테이션을 유심히 보겠다.
다시 한번 @EnableAutoConfiguration 위에서 F3을 누르면 아래와 같은 코드를 볼 수 있다.
위 코드에서 @Import(AutoConfigurationImportSelector.class) 부분은
AutoConfigurationImportSelector.class를 가져오며
AutoConfigurationImportSelector.class 내부에 getCandidateConfigurations 메소드를 호출하고
메소드 내부에서 SpringFactoriesLoader.loadFactoryNames 메소드가 호출 되고
loadFactoryNames는 loadSpringFactories 메소드를 반환한다.
loadSpringFactories메소드 선언부분을 확인해보면 상수로 "FACTORIES_RESOURCE_LOCATION"를 사용하는데 해당 상수 값은 "META-INF/spring.factories" 경로가 선언되어 있다.
META-INF/spring.factories 경로에는 자동으로 생성할 빈에 대한 선언이 되어 있다.
해당 파일은 아래와 같다.
'spring' 카테고리의 다른 글
VScode 콘솔창 gradle profiles 적용이 안됨 조치 (0) | 2022.11.10 |
---|---|
spring security 스프링시큐리티 주요 설정 분석 (0) | 2022.02.27 |
[JPA] JPA 프로젝트 수정 기능 구현 시 null 값으로 저장되는 현상 (2) | 2022.01.13 |
[JPA] 메서드명으로 쿼리 생성 원리 (0) | 2020.10.06 |
[Spring] MVC DispatcherServlet 동작 원리 (1) | 2020.07.20 |
- Total
- Today
- Yesterday
- html
- vscode
- docker
- 날짜
- Git
- btye
- mybatis
- Java
- gradle
- jQuery
- SSL
- React
- spring
- Windows
- SpringBoot
- JPA
- Oracle
- jaxen
- 이벤트발생
- SQL
- Eclipse
- WAS
- 컨테이너
- TLS
- parse
- web
- JSON
- IMAGE
- 깨짐
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |