개발강의정리/Spring

[스프링 부트 개념과 활용] 3-3. 자동 설정 이해

nineDeveloper 2019. 10. 15.
728x90

스프링 부트 개념과 활용


3. 스프링 부트 원리

포스팅 참조 정보

GitHub

공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다

해당 포스팅에 대한 내용의 GitHub 주소

실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다

https://github.com/freespringlecture/springboot-concept-uses/tree/chap03-03-autoconfigure

 

freespringlecture/springboot-concept-uses

백기선님의 스프링 부트 개념과 활용 강의 내용 정리. Contribute to freespringlecture/springboot-concept-uses development by creating an account on GitHub.

github.com

해당 포스팅 참고 인프런 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

스프링 부트 개념과 활용 - 인프런

스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다. 중급 프레임워크 및 라이브러리 Spring Spring Boot 온라인 강의

www.inflearn.com

실습 환경

  • Java Version: Java 11
  • SpringBoot Version: 2.1.2.RELEASE

3. 자동 설정 이해


@SpringBootApplication

@SpringBootApplication은 세개의 어노테이션이 합쳐져 있음
@EnableAutoConfiguration으로 인해 여러가지 설정이 자동으로 되고 웹 애플리케이션이 동작함

  • @SpringBootConfiguration
  • @ComponentScan
  • @EnableAutoConfiguration

빈은 사실 두 단계로 나눠서 읽힘

  • 1단계 : @ComponentScan
  • 2단계 : @EnableAutoConfiguration

@EnableAutoConfiguration 없이 애플리케이션을 구동할 수 있음

단 아래와 같이 설정하면 웹 서버로서의 동작은 안함

@Configuration
@ComponentScan
public class SpringinitApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(Application.class);
        application.setWebApplicationType(WebApplicationType.NONE);
        application.run(args);
    }

}

@ComponentScan

아래의 어노테이션으로 지정된 클래스들은 모두 빈으로 등록됨

  • @Component
  • @Configuration @Repository @Service @Controller @RestController

@EnableAutoConfiguration

  • spring-boot-autoconfigure 하위의 spring.factories

아래의 파일의 meta에 설정에 필요한 자바 설정파일들을 아래의 키 값 밑에 설정되어있는 클래스들을 참조하여 모두 읽어들임
수 많은 자동 설정 파일들이 조건에 따라 적용되어 수많은 빈들이 생성이 되고
내장 톰캣을 사용해서 서블릿 컨테이너에서 웹 애플리케이션 하나가 동작하게 됨

org.springframework.boot.autoconfigure.EnableAutoConfiguration

@ConditionalOnXxxYyyZzz

전부 다 읽어드리는 것은 아님
조건에 따라 어떤 빈은 등록하기도 하고 등록 안하기도 함

728x90

댓글

💲 추천 글