Spring中cacheConfiguration Bean不兼容BeanPostProcessor警告的原因与解决
Spring缓存配置警告的原因与修复方案
警告原因
这个警告的核心问题是:你的CacheConfiguration配置类被Spring容器提前实例化了,而此时容器里的部分BeanPostProcessor(比如提示里的meterRegistryPostProcessor)还没完全初始化好,导致这个配置类无法被所有BeanPostProcessor处理——最典型的就是自动代理功能会失效。
用@Lazy修复的两种方式
你提到的@Lazy注解可以通过以下两种方式应用到你的代码里:
方式一:给整个配置类加@Lazy
直接在@Configuration下面加上@Lazy注解,让整个配置类延迟初始化,避免在BeanPostProcessor初始化阶段被提前创建:
@Configuration @Lazy public class CacheConfiguration implements CachingConfigurer { @Override public CacheErrorHandler errorHandler() { return new CustomCacheErrorHandler(); } }
方式二:给errorHandler方法加@Lazy
如果不想让整个配置类延迟加载,也可以只给errorHandler方法添加@Lazy,让这个缓存错误处理器Bean延迟初始化:
@Configuration public class CacheConfiguration implements CachingConfigurer { @Override @Lazy public CacheErrorHandler errorHandler() { return new CustomCacheErrorHandler(); } }
补充建议
两种方式都能解决这个警告,优先推荐方式一。因为缓存配置类本身不需要在容器启动初期就初始化,延迟加载完全不会影响后续缓存功能的正常使用。
内容的提问来源于stack exchange,提问作者user1766169
相关产品推荐
相关产品推荐

