ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring-boot-autoconfiguration
    카테고리 없음 2023. 4. 18. 12:30

    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")
    

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

    댓글

Designed by Tistory.