我在寻找两件事:
>
如何使用Spring boot“dev”概要文件在开发过程中禁用所有缓存。在应用程序中,不需要有一个通用设置来全部关闭它。财产。最简单的方法是什么?
如何禁用特定方法的缓存?我试着这样使用SpEl:
@Cacheable(value = "complex-calc", condition="#${spring.profiles.active} != 'dev'}")
public String someBigCalculation(String input){
...
}
但我可以让它工作。有几个问题与此相关,但它们涉及XML配置或其他内容,但我使用的是SpringBoot1.3。3,这使用自动配置。
我不想把事情复杂化。
对于第二个问题,请执行以下操作:
编写一个确定特定概要文件是否处于活动状态的方法(环境是您的注入环境)
boolean isProfileActive(String profile) {
return Arrays.asList(environment.getActiveProfiles()).contains(profile);
}
然后将其用于可缓存注释上的spel条件
David Newcomb的评论告诉我们真相:
spring.cache.type=NONE
不会关闭缓存,它会阻止缓存。也就是说,它仍然在你的程序中添加了27层AOP/拦截器堆栈,只是它不做缓存。这取决于他所说的“全部关掉”是什么意思。
使用此选项可能会加快应用程序的启动,但也可能会有一些开销。
1)完全禁用Spring缓存功能
将@EnableCaching
类移动到专用配置类中,我们将使用@Profile
包装该类以启用它:
@Profile("!dev")
@EnableCaching
@Configuration
public class CachingConfiguration {}
当然,如果您已经有了一个配置
类,该类对开发
环境以外的所有环境都启用,只需重新使用它:
@Profile("!dev")
//... any other annotation
@EnableCaching
@Configuration
public class NoDevConfiguration {}
2) 使用假(noop)缓存管理器
在某些情况下,通过概要文件激活@EnableCaching
是不够的,因为您的某些类或应用程序的某些Spring依赖项期望从Spring容器中检索实现组织的bean。springframework。隐藏物CacheManager
接口
在这种情况下,正确的方法是使用一个伪实现,它允许Spring解析所有依赖项,而CacheManager
的实现是无开销的。
我们可以通过使用@Bean
和@Profile
来实现它:
import org.springframework.cache.support.NoOpCacheManager;
@Configuration
public class CacheManagerConfiguration {
@Bean
@Profile("!dev")
public CacheManager getRealCacheManager() {
return new CaffeineCacheManager();
// or any other implementation
// return new EhCacheCacheManager();
}
@Bean
@Profile("dev")
public CacheManager getNoOpCacheManager() {
return new NoOpCacheManager();
}
}
或者,如果更合适,可以添加Spring。隐藏物type=NONE
属性,该属性生成与M.Deinum答案中写入的结果相同的结果。
默认情况下,会自动检测并配置缓存类型。但是,您可以通过添加spring来指定要使用的缓存类型。隐藏物在配置中键入
。要禁用它,请将该值设置为NONE
。
当您想要为特定的概要文件执行此操作时,请将其添加到该概要文件应用程序中。属性
在本例中,修改应用程序-dev.properties
并添加
spring.cache.type=NONE
这将禁用缓存。
我正在用Springboot和Angular 8创建一个应用程序。我对Springboot是新手。我的计划是在中构建前端(-将从)调用。 另一方面,如果我使用启动前端(在开发过程中),那么由于跨源问题,它将无法工作。
问题内容: 当用户禁用JavaScript时,我正在尝试调试网站的功能。我想知道如何禁用Google Chrome DevTools中页面的JavaScript? 问题答案: 单击“ 开发人员工具”角落的菜单,单击“设置”,然后在下进行检查。
我试图在用户禁用其JavaScript时调试网站的功能。我想知道如何从Google Chrome DevTools中禁用JavaScript页面?
似乎Springboot自动配置自己来使用Tomcat的Logback。我想禁用它,并使用我在类路径中提供的一个。 LoggerFactory不是LoggerContext,但Logback位于类路径上。删除Logback或类[org.slf4j.impl.SimpleLoggerFactory]的竞争实现(类org.slf4j.impl.SimpleLoggerFactory)对象必须是类ch.
我试图在我的基于微服务的Spring启动应用程序中实现普罗米修斯,部署在weblogic服务器上。作为POC的一部分,我已经将配置作为一场战争的一部分。为了启用它,我在下面设置了配置- 应用属性 格拉德尔- 但执行器请求被现有的拦截器阻止。它要求在特定于我们项目的标题中传递值。通过postman(http:localhost:8080/abc/activator/prometheus),我可以测试
学习各种组件和工具帮助你对Django应用进行改进和测试: