Reference: Spring Docs - @ConditionalOnProperty
- Spring Framework에서 어떤 Bean이 생성되거나 구성되기 위한 조건을 지정하는데 사용되는 조건부 annotation
- 특정 property 값의 유무나 값에 따라 Bean 생성 여부를 결정할 수 있다
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {
/**
* Alias for {@link #name()}.
* @return the names
*/
String[] value() default {};
/**
* A prefix that should be applied to each property. The prefix automatically ends
* with a dot if not specified. A valid prefix is defined by one or more words
* separated with dots (e.g. {@code "acme.system.feature"}).
* @return the prefix
*/
String prefix() default "";
/**
* The name of the properties to test. If a prefix has been defined, it is applied to
* compute the full key of each property. For instance if the prefix is
* {@code app.config} and one value is {@code my-value}, the full key would be
* {@code app.config.my-value}
* <p>
* Use the dashed notation to specify each property, that is all lower case with a "-"
* to separate words (e.g. {@code my-long-property}).
* @return the names
*/
String[] name() default {};
/**
* The string representation of the expected value for the properties. If not
* specified, the property must <strong>not</strong> be equal to {@code false}.
* @return the expected value
*/
String havingValue() default "";
/**
* Specify if the condition should match if the property is not set. Defaults to
* {@code false}.
* @return if the condition should match if the property is missing
*/
boolean matchIfMissing() default false;
}
- property가 Environment 에 존재하고,
- false가 아니다
name
(필수 속성) - String[]- test 하고자 하는 property 의 이름을 지정한다
havingValue
- String- 해당 property가 가지고 있어야 하는 attribute를 명시한다
- property 값과 비교할 값을 지정!
- 선택적으로 사용할 수 있으며, default 값은 empty string (””)이다
- 해당 값이 지정하지 않거나 empty string으로 생성하면, property 값이 어떤 값이든 상관 없이 property가 설정되기만 하면 Bean이 생성된다
- 값이 지정된 경우 (not empty string), 지정한 값과 property 값이 일치해야 Bean이 생성된다
- 해당 property가 가지고 있어야 하는 attribute를 명시한다
matchIfMissing
- boolean- 해당 property 가 아예 Environment에 존재하지 않을 때 조건을 만족할지 여부를 결정한다
- default 값은
false
이고, property가 설정되지 않으면 Bean이 생성되지 않는다 true
로 설정하면 property가 설정되지 않은 경우에도 Bean이 생성된다
prefix
- String- 각각의 property에 적용하고자 하는 prefix를 지정한다
- 이 속성을 사용하면 여러 property들에 대해 공통된 prefix를 사용하여 조건을 지정할 수 있다
value
- String[]- name() 의 alias