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 有何影响?
- 当cacheManager bean没有被引发时会不会报错
产品?
- 在产品上 spring 会不会出现默认情况下会引发 cacheManager 的情况?
您需要将 @EnableCaching
从 class Application
移动到 class CachingConfig
以使缓存仅对 Profile = "test"
起作用
@Profile("test")
@EnableCaching
@Configuration
class CachingConfig { ... }
使用这种方法,当非“测试”配置文件处于活动状态时,甚至不会将 CachingConfig 加载到应用程序上下文中
我需要为 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 有何影响?
- 当cacheManager bean没有被引发时会不会报错 产品?
- 在产品上 spring 会不会出现默认情况下会引发 cacheManager 的情况?
您需要将 @EnableCaching
从 class Application
移动到 class CachingConfig
以使缓存仅对 Profile = "test"
@Profile("test")
@EnableCaching
@Configuration
class CachingConfig { ... }
使用这种方法,当非“测试”配置文件处于活动状态时,甚至不会将 CachingConfig 加载到应用程序上下文中