TIL_018 | Conditional

묘한묘랑·2023년 12월 21일
0

TIL

목록 보기
18/31
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {

	String[] value() default {};

	String prefix() default "";

	String[] name() default {};

	String havingValue() default "";

	boolean matchIfMissing() default false;

}
nameusage
prefixProperty의 접두사
nameProperty의 이름
havingValueProperty의 값이 이것과 일치 하였을 때 통과 시키기
matchIfMissing값을 찾지 못하였을 때 Condition을 통과 할 것인가에 대하여

Condition Class


@FunctionalInterface
public interface Condition{
	boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata);
}

public class TestCondition implements Condition{
	boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata){
    	return true // true일 경우 Conditional통과.
    };
}

@Conditional(TestCondition.class) // TestCondition에서 통과 되었을 경우 Bean등록
public class SomeClass{}

Condition의 구현체로 SpringBootCondition이 존재하며, 로깅기능을 제공한다.

profile
상황에 맞는 기술을 떠올리고 사용할 수 있는 개발자가 되고 싶은 개발자

0개의 댓글