spring boot autoconfiguration 정리

ConditionalOnMissingBean

@ConditionalOnMissingBean

Bean 이 존재 하지 않을때 실행되는 어노테이션이다.
bean name(String)으로 설정 할 수 도 있고 class(해보지 않음) 혹은 annotation(이것도 안해봄)등 설정 할 수 있는 모양이다.

예) @ConditionalOnMissingBean(name = "helloConfigSample")
helloConfigSample 존재 하지 않을때 실행하라.

ConditionalOnBean

@ConditionalOnBean

이 전과 반대로 Bean이 존재 할때 실행 되는 어노테이션이다.

예) @ConditionalOnBean(name = "helloConfig")
helloConfig 존재 할때 실행하라.

ConditionalOnProperty

@ConditionalOnProperty

속성중 prefix라는 속성이 있는데 이 속성의 해당되는 프로퍼티 값이 있다면 실행된다.

예) @ConditionalOnProperty(prefix = "autoconfig.sample", name = "id")

EnableConfigurationProperties

@EnableConfigurationProperties

ConditionalOnProperty 같이 사용하는 어노테이션이다. 프로퍼티의(예를 들어) autoconfig.sample.id 가 있다면 id 값을 저장 해놓기 위한 class가 필요 하다. 그용도로 사용한다.
EnableConfigurationProperties 만 있어도 사용은 가능하지만 프로퍼티의 autoconfig.sample.id 설정하지 않았다면 null 로 나온다. 만약 사용한다면 위의 어노테이션이랑 사용하길 권장한다.

예) @EnableConfigurationProperties(SampleProperties.class)

ConditionalOnWebApplication

@ConditionalOnWebApplication

웹인지 아닌지 판단 하는 어노테이션이다. web 일경우 실행된다. 별거 없다.

예) @ConditionalOnWebApplication

ConditionalOnNotWebApplication

@ConditionalOnNotWebApplication

위와 반대로 web이 아닐경우 실행된다.

예) @ConditionalOnNotWebApplication

ConditionalOnJava

@ConditionalOnJava

자바 버전을 설정 하는 어노테이션이다.
현재 버전(자신의 버전)설정한 버전 보다 낮으면 실행된다.
예를 들어 자신의 버전이 1.8 이고 설정한 버전이 1.8 버전보다 작거나 같다면 실행되고 높으면 실행 되지 않는다.

예) @ConditionalOnJava(value = ConditionalOnJava.JavaVersion.SIX)

ConditionalOnResource

@ConditionalOnResource

리소스 경로에 파일이 있으면 실행되는 어노테이션이다. 특정 경로를 지정해주면 된다.

예) @ConditionalOnResource(resources = "classpath:/META-INF/resourcesfile")

ConditionalOnClass

@ConditionalOnClass

처음에 bean과 동일하게 class를 지정 해주면 된다.(해보진 않았다. 동일하다고 예상된다. jar로 묶어야 되는데 귀찮)
name으로 지정시에는 풀 패키지명을 써줘야 된다.

예) @ConditionalOnClass(name = "com.example.annotation.HelloConfig") 이것만 해봐서 예로 달아놨다.

ConditionalOnMissingClass

@ConditionalOnMissingClass

위의 어노테이션이랑 반대되는 어노테이션이다. 이것도 해보지않았다. name 으로만 해보았다.

예) @ConditionalOnMissingClass(name = "com.example.annotation.HelloConfigMissing")

ConditionalOnExpression

@ConditionalOnExpression

표현식으로 나타낼수 있는 어노테이션이다.

예) @ConditionalOnExpression(value = "'${spring.application.name}' == 'spring-autoconfig'")

위의 어노테션 말고도 몇가지가 더 있는데 자주 쓸만한건 없는거 같다.