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

 

  1. @SpringConfiguration = @Configuration
    main
    메소드 클래스에 있는 @Bean 올려주는 역할을 한다.
    일반적으로 @SpringBootApplication 있으며 하나의 어플리케이션에 하나의 @SpringConfiguration 갖는다.
  2. @ComponentScan
    어노테이션이 작성되어있는 클래스를 기준으로 이하에 @Component 어노테이션을 가진 모든 클래스를 읽어들여 빈으로 올려준다.
    @Configuration @Repository @Service @Controller @RestController 어노테이션에는 @Component 어노테이션이 들어있어 읽어들인다.
    스프링 어플리케이션은 @ComponentScan으로 한번 읽고 다시 @EnableAutoConfiguration 에서 읽어들인 빈의 정보를 다시 읽여들인다.
  3. @EnableAutoConfiguraion
    spring.factories
    메타파일을 읽어들여 명시되어 있는 클래스들을 빈으로 등록한다.
    해당 클래스들은 모두 @Configuration 어노테이션이 작성 되어있다.
    명시되어있는
    클래스들에서도 @ConditionalOnXxxYyyZzz 어노테이션들의 조건에 따라 바뀔 수가 있다.