Spring 引导 - 如何为 spring.profiles.active = 测试禁用 @Cacheable?

Spring Boot - How to disable @Cacheable for spring.profiles.active = test?

我需要为 spring.profiles.active = 测试的方法启用 in_memory 缓存。仅需要缓存最近 10 分钟的请求。

现在我这样设置:

@Profile("test")
@Configuration
class CachingConfig {
    @Bean
    fun cacheManager() = Caffeine.newBuilder()
        .expireAfterWrite(10, TimeUnit.MINUTES)
        .build<Any, Any>()
}
@Cacheable("request", key = "#dto.id")
fun request(dto: RequestDTO): Any {
    ...
}
@EnableCaching
@SpringBootApplication
@EnableConfigurationProperties
class Application

fun main(args: Array<String>) {
    SpringApplication.run(Application::class.java, *args)
}

build.gragle

test {
    systemProperty "spring.profiles.active", "test"
}

但我不敢扩展它,因为我不确定它在那里是否能正常工作。

我不完全明白:这对 spring.profiles.active = prod 有何影响?

  1. 当cacheManager bean没有被引发时会不会报错 产品?
  2. 在产品上 spring 会不会出现默认情况下会引发 cacheManager 的情况?

您需要将 @EnableCachingclass Application 移动到 class CachingConfig 以使缓存仅对 Profile = "test"

起作用
@Profile("test")
@EnableCaching
@Configuration
class CachingConfig { ... }

使用这种方法,当非“测试”配置文件处于活动状态时,甚至不会将 CachingConfig 加载到应用程序上下文中