0
속성 값에 따라 다른 구성 클래스를 가져올 주석을 원합니다. 그것은이 같은 일을 수 있습니다@ConditionalOnExpression을 사용하여 주석의 속성 값을 확인할 수 있습니까?
(이 모든이 의사 코드)
주석 :
import org.springframework.context.annotation.Import;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import(RedisConfig.class)
@Import(HazelCastConfig.class)
public @interface EnableCaching
{
Class cacheType() default Redis.class;
}
CONFIGS 중 하나의 예 :
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.cache.annotation.EnableCaching;
import java.util.List;
@EnableCaching
@ConditionalOnExpression("#{T(com.mypackage.CacheAnnotationMatcher).checkCacheType(com.mypackage.Redis.class)}")
public class RedisConfig
{
//...elided...
}
CacheAnnotationMatcher.checkProperty
내가 만든 클래스와 메서드는 @EnableCaching
주석을 찾고 cacheType
속성을 확인하고 true/false를 반환합니다.
클래스를 전달할 수 없습니다. 오류가 발생합니다. 그리고 "*"는 모든 패키지를 허용하지 않습니다. yaml 속성을 전달하는 방법이 있습니까? –
클래스를 전달할 수 있습니다 :'... checkCacheType (Class.forName ('com.something.Clazz'))'. 또는 String으로 전달하고 클래스의 String 표현을 비교합니다. 나는 완전히 확신하지 못합니다. yaml 속성을 전달하면 무슨 뜻입니까? – helospark
예,해야한다면 문자열로 전달 하겠지만 클래스로 전달하는 것을 선호합니다. –