Java 理解@Enable。。。注释并发性
我们有一个使用spring启动缓存启动器的项目,它注册了一个Java 理解@Enable。。。注释并发性,java,spring-boot,spring-cache,spring-boot-starter,jsr107,Java,Spring Boot,Spring Cache,Spring Boot Starter,Jsr107,我们有一个使用spring启动缓存启动器的项目,它注册了一个ehCacheCacheManager实现,并在代码之间传播@CacheablesACC 然后,另一个团队创建了一个starter,它基本上依赖于springbootcachestarter(hashmap)配置的默认配置来处理@Cacheable方法 这两个代码都包含@EnableCaching注释,我们的问题是,如果我们对主项目的@EnableCaching注释进行注释,行为会有所不同 如果我们在项目中不注释@EnableCachi
ehCache
CacheManager
实现,并在代码之间传播@Cacheables
ACC
然后,另一个团队创建了一个starter,它基本上依赖于springbootcache
starter(hashmap)配置的默认配置来处理@Cacheable
方法
这两个代码都包含@EnableCaching
注释,我们的问题是,如果我们对主项目的@EnableCaching注释进行注释,行为会有所不同
@EnableCaching
,那么当我们使用自定义启动程序时,一切都正常<代码>@Cacheables来自
starter在starter范围内进行索引和解析,但
来自我们域的@Cacheables
在我们的ehcache
中解析@EnableCaching
,则会尝试解析初学者和项目的@Cacheables
针对我们的ehCache
实现@Enable
这样的注释。。。应用于所有上下文,不考虑位置(启动器/应用程序配置),也不考虑在扫描所有@configuration
类时是否找到它一次或两次CacheManager
是一个@ConditionalOnBean
,因此在这种情况下,我希望两个项目都使用ehcache
bean进行解析,而不是每个项目的域注意:在我们的主项目中找到的
@EnableCaching
放在一个内部静态@Configuration类中。这可能很重要吗?如果您不透露自定义启动器的功能,则很难回答您的问题。特别是,这在我看来很奇怪:
@starter中的Cacheables在starter作用域中被索引和解析,但域中的@Cacheables在ehcache中被解析
你的先入之见1是有效的:不管你把注释放在哪里,或者你是否多次添加它。它只会为整个ApplicationContext
启用缓存。在Spring引导的情况下,这将触发自动配置,除非在用户配置中定义了自定义CacheManager
bean
“每个人的领域”对我来说都是破碎的。你确定这是真的吗?如果要存储在多个缓存管理器中,没有很多不同的方法:
CacheResolver
,并在@Cacheable
注释(或@CacheConfig
)中引用它CacheManager
,它知道在每个底层存储中的哪里可以找到缓存@Cacheable
用法,它将违反CacheManager
。如果您注意到所描述的行为,那么它与@EnableCaching
完全无关