Develop/Spring Boot
4. 자동 설정
자라선
2020. 7. 27. 15:38
스프링 부트 어플리케이션의 실행을 하기 위해 기본적으로
@SpringBootApplication 어노테이션 과
main 메소드에 SpringApplication.run(Application.class, args); 의 스태틱 메소드로 실행을 하여 서버를 시작한다.
스태틱 메소드를 사용하지 않고 별도로 커스텀 하여 실행할 수 있다.
아래와 같이 실행 시 웹 어플리케이션의 타입을 빼버려 웹 서버로 동작하지 않는다.
SpringApplication application = new SpringApplication(Application.class);
application.setWebApplicationType(WebApplicationType.NONE);
application.run(args);
@SpringBootApplication 어노테이션에 중요한 어노테이션이 3가지가 있다.
- @SpringConfiguration = @Configuration
- @EnableAutoConfiguraion
- @ComponentScan
- @SpringConfiguration = @Configuration
main 메소드 클래스에 있는 @Bean 을 올려주는 역할을 한다.
일반적으로 @SpringBootApplication에 있으며 하나의 어플리케이션에 하나의 @SpringConfiguration를 갖는다. - @ComponentScan
이 어노테이션이 작성되어있는 클래스를 기준으로 이하에 @Component 어노테이션을 가진 모든 클래스를 읽어들여 빈으로 올려준다.
@Configuration @Repository @Service @Controller @RestController 어노테이션에는 @Component 어노테이션이 들어있어 읽어들인다.
스프링 어플리케이션은 @ComponentScan으로 한번 읽고 다시 @EnableAutoConfiguration 에서 읽어들인 빈의 정보를 다시 읽여들인다. - @EnableAutoConfiguraion
spring.factories 의 메타파일을 읽어들여 명시되어 있는 클래스들을 빈으로 등록한다.
해당 클래스들은 모두 @Configuration 어노테이션이 작성 되어있다.
명시되어있는 클래스들에서도 @ConditionalOnXxxYyyZzz 어노테이션들의 조건에 따라 바뀔 수가 있다.