스프링 자동구성 대표적인 방법

어떤 라이브러리가 프로젝트에 포함되어있는지 확인하는 방법

ClassUtils.isPresent()

@MyAutoConfiguration
@Conditional(TomcatWebServerConfig.TomcatCondition.class)
public class TomcatWebServerConfig {
    @Bean("tomcatWebServerFactory")
    public ServletWebServerFactory servletWebServerFactory() {
        return new TomcatServletWebServerFactory();
    }

    static class TomcatCondition implements Condition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
            return ClassUtils.isPresent("org.apache.catalina.startup.Tomcat", context.getClassLoader());
        }
    }
}

서버 실행 → multiple ServletWebServerFactory beans 에러

Pasted Graphic 18.png

서버 실행 → Jetty 의존성을 제거한다면?

image.png

image.png

서버 실행 → Tomcat 의존성을 제거한다면?

tomcat은 최상단 의존 라이브러리 목록에 포함되어 있지 않기 때문에 exclude를 이용하여 포함되지 않도록 제거해줘야 됨

Pasted Graphic 20.png

Pasted Graphic 22.png