【发布时间】:2018-05-11 01:48:57
【问题描述】:
我想要一个注释,它将根据属性的值引入不同的配置类。它可能会像这样工作:
(以上都是伪代码)
注释:
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 属性并返回真/假。
【问题讨论】:
标签: java spring spring-boot spring-config spring-boot-configuration