본문 바로가기
Spring/인프런 토비의 Spring Boot

섹션 6-4 [자동 구성 기반 애플리케이션] 인프라 빈 구성 정보와 분리

by include_hoany 2024. 6. 14.

인프라 빈 구성 정보와 분리

기존에 TomcatWebServerFactory, DispatcherServlet 구성정보를 등록하는 Config를 위 구조로 변경해보도록 하겠습니다.

 

package com.tobyspring.tobyspringboot;  
  
  
import com.tobyspring.config.MySpringBootApplication;  
import org.springframework.boot.SpringApplication;  
  
@MySpringBootApplication  
public class TobyspringbootApplication {    
    public static void main(String[] args) {  
       SpringApplication.run(TobyspringbootApplication.class, args);  
    }  
  
}

 

package com.tobyspring.config;  
  
import org.springframework.context.annotation.ComponentScan;  
import org.springframework.context.annotation.Configuration;  
  
import java.lang.annotation.ElementType;  
import java.lang.annotation.Retention;  
import java.lang.annotation.RetentionPolicy;  
import java.lang.annotation.Target;  
  

@Retention(RetentionPolicy.RUNTIME)  
@Target(ElementType.TYPE)  
@Configuration  
@ComponentScan  
@EnableMyAutoConfiguration  
public @interface MySpringBootApplication { }

 

package com.tobyspring.config;  
  
import com.tobyspring.config.autoconfig.DispatcherServletConfig;  
import com.tobyspring.config.autoconfig.TomcatWebserverConfig;  
import org.springframework.context.annotation.Import;  
  
import java.lang.annotation.ElementType;  
import java.lang.annotation.Retention;  
import java.lang.annotation.RetentionPolicy;  
import java.lang.annotation.Target;  
  
@Retention(RetentionPolicy.RUNTIME)  
@Target(ElementType.TYPE)  
@Import({DispatcherServletConfig.class, TomcatWebserverConfig.class})  
public @interface EnableMyAutoConfiguration { }

 

package com.tobyspring.config.autoconfig;  
  
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;  
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
  
@Configuration  
public class TomcatWebserverConfig {  
  
    @Bean  
    public ServletWebServerFactory servletWebServerFactory() {  
        return new TomcatServletWebServerFactory();  
    }  
  
}

 

package com.tobyspring.config.autoconfig;  
  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
import org.springframework.web.servlet.DispatcherServlet;  
  
@Configuration  
public class DispatcherServletConfig {  
  
    @Bean  
    public DispatcherServlet dispatcherServlet() {  
        return new DispatcherServlet();  
    }  
  
}