0

我想要一个注释,它将根据属性的值引入不同的配置类。它可能会像这样工作:

(所有这些都是伪代码)

注释:

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;
}

配置之一的示例:

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属性并返回真/假。

4

1 回答 1

0

我认为您可以@ConditionalOnExpression在这里使用,我完全看不出您的代码无法正常工作的原因,您尝试过吗?

于 2017-11-27T20:03:21.077 回答