티스토리 뷰

SpringBoot를 이용해서 프로젝트를 진행하다가 SpringBoot는 어떻게 별도의 설정 없이 구동이 되는지 궁금하여 찾아보게 되었다.

 

SpringBoot는 프로젝트를 생성 시 사용할 옵션을 선택하여 프로젝트가 생성되며,

Spring Boot App을 실행하면 별도의 설정 없이 기본적으로 사용할 옵션이 설정되어 프로젝트가 구동이 된다.

 

이때 어떻게 자동으로 설정이되는지 확인해보았다.

 

우선 프로젝트를 생성하면 pom.xml에 아래와 같이 선택한 옵션에 대한 Dependency를 확인할 수 있다.

pom.xml

위와 같이 보통은 "spring-boot-starter-선택옵션명" 규칙으로 생성되며 해당 Dependency로 필요한 의존성과 설정을 자동화한다.

 

Spring Boot App을 실행하면 "@SpringBootApplication" 어노테이션을 찾아 실행을 하며

"@SpringBootApplication"에서 F3을 누르면 해당 어노테이션을 선언한 class 파일로 이동할 수 있다.

@SpringBootApplication 설정 java

이동한 class파일의 상단에서는 아래와 같은 어노테이션을 확인할 수 있다.

 

선언된 어노테이션중 주요 확인할 어노테이션은 아래 3가지다.

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan

 

그중 자동화 설정은 @EnableAutoConfiguration 어노테이션을 유심히 보겠다.

 

다시 한번 @EnableAutoConfiguration 위에서 F3을 누르면 아래와 같은 코드를 볼 수 있다.

@EnableAutoConfiguration java

위 코드에서 @Import(AutoConfigurationImportSelector.class) 부분은

AutoConfigurationImportSelector.class를 가져오며

AutoConfigurationImportSelector.class 내부에 getCandidateConfigurations 메소드를 호출하고

getCandidateConfigurations 메소드

메소드 내부에서 SpringFactoriesLoader.loadFactoryNames 메소드가 호출 되고 

loadFactoryNames 메소드

loadFactoryNames는 loadSpringFactories 메소드를 반환한다.

loadSpringFactories 메소드

loadSpringFactories메소드 선언부분을 확인해보면 상수로 "FACTORIES_RESOURCE_LOCATION"를 사용하는데 해당 상수 값은 "META-INF/spring.factories" 경로가 선언되어 있다.

 

상수 FACTORIES_RESOURCE_LOCATION

META-INF/spring.factories 경로에는 자동으로 생성할 빈에 대한 선언이 되어 있다.

 

해당 파일은 아래와 같다.

META-INF/spring.factories 경로

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함