not BB,just show my code
1、开关控制器
public class EnableTestCacheSwitch {
@Bean
public EnableTest EnableTestCacheMarker(){
return new EnableTest ();
}
public class EnableTest {
}
}
2、开关控制器注解(用于启动类)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
//引入控制器
@Import(EnableTestCacheSwitch.class)
public @interface EnableTestCache {
}
3、config配置文件
@Data
@ConfigurationProperties(prefix = "test-cache")
public class TestCacheProperties {
private Boolean allowNull = true;
private Integer init = 100;
}
4、config配置文件
@EnableCaching
@Configuration
//条件
@ConditionalOnBean(EnableTestCacheSwitch.EnableTest.class)
//配置文件
@EnableConfigurationProperties(TestCacheProperties.class)
public class TestCacheConfig extends CachingConfigurerSupport {
@Bean("testRedisTemplate")
@ConditionalOnClass(value = RedisTemplate.class)
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
//init bean
}
}
5、启动类开启
@EnableTestCache
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
log.info("=====app had started=====");
}
}
该博客介绍了如何通过自定义注解和配置类来实现缓存功能的开关控制以及条件加载。首先创建了一个开关控制器类`EnableTestCacheSwitch`,并使用`@Bean`创建了`EnableTest`实例。接着定义了注解`@EnableTestCache`,利用`@Import`引入开关控制器。然后配置了`TestCacheProperties`以读取配置文件中的参数。`TestCacheConfig`类使用`@ConditionalOnBean`和`@EnableConfigurationProperties`根据条件加载,并配置了`RedisTemplate`。最后在启动类上启用`@EnableTestCache`来启动缓存功能。

3万+

被折叠的 条评论
为什么被折叠?



