어떤 라이브러리가 프로젝트에 포함되어있는지 확인하는 방법
@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());
}
}
}
ClassUtils.isPresent()
을 체크해서 프로젝트의 의존 라이브러리 안에 포함되어 있다면 true를, 포함되지 않았다면 false를 리턴함ConditionContext
은 애플리케이션 환경에 관련된 여러가지 오브젝트를 가지고 올 수 있음tomcat은 최상단 의존 라이브러리 목록에 포함되어 있지 않기 때문에 exclude를 이용하여 포함되지 않도록 제거해줘야 됨