Java 在JHipster中禁用ehcache的最佳方法是什么
我希望在生产中使用EHCache,但不希望在开发中使用,因为我在开发中往往会摆弄数据库记录 搜索之后,我遇到的唯一一件事是这个JVM选项完全禁用缓存Java 在JHipster中禁用ehcache的最佳方法是什么,java,mysql,database,ehcache,jhipster,Java,Mysql,Database,Ehcache,Jhipster,我希望在生产中使用EHCache,但不希望在开发中使用,因为我在开发中往往会摆弄数据库记录 搜索之后,我遇到的唯一一件事是这个JVM选项完全禁用缓存-Dnet.sf.ehcache.disabled=true,但不知何故,这似乎不是理想的解决方案 最好是在application-dev.yml中有一个选项。我修改了timeToLiveSeconds并将其调低(1),但似乎没有任何效果 我试图像这样在我的REST服务中添加api,但似乎也没有任何效果: /** * GET /clearCach
-Dnet.sf.ehcache.disabled=true
,但不知何故,这似乎不是理想的解决方案
最好是在application-dev.yml中有一个选项。我修改了timeToLiveSeconds并将其调低(1),但似乎没有任何效果
我试图像这样在我的REST服务中添加api,但似乎也没有任何效果:
/**
* GET /clearCache -> Clear Cache
*/
@RequestMapping(value = "/clearCache",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public ResponseEntity<String> clearCache() {
CacheManager.getInstance().clearAll();
return new ResponseEntity<String>(HttpStatus.OK);
}
非常感谢您的帮助
以下是我的快速启动完整日志:
[INFO] mypackage.Application - Starting Application on Lenovo-PC with PID 7408 (D:\projects\app\target\classes started by lenovo in D:\projects\app)
[DEBUG] mypackage.Application - Running with Spring Boot v1.2.4.RELEASE, Spring v4.1.6.RELEASE
[DEBUG] org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider
[DEBUG] mypackage.config.DatabaseConfiguration - Configuring Datasource
[WARN] org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [mypackage.Org]; using defaults.
[WARN] org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [mypackage.Workflow]; using defaults.
[WARN] org.hibernate.cache.ehcache.AbstractEhcacheRegionFactory - HHH020003: Could not find a specific ehcache configuration for cache named [mypackage.Department]; using defaults.
...
...
...
[DEBUG] mypackage.config.MailConfiguration - Configuring mail server
[INFO] mypackage.Application - Running with Spring profile(s) : [dev, fast]
如果查看CacheConfiguration类,您将看到:
@Profile("!" + Constants.SPRING_PROFILE_FAST)
public class CacheConfiguration {
所以,如果您使用fast配置文件,缓存将被禁用,所以您可以使用此配置文件,或者更改注释以仅在prod配置文件中启用缓存
@Profile(Constants.SPRING_PROFILE_PRODUCTION)
public class CacheConfiguration {
没错,发出警告日志的ehcache代码无论如何都会创建一个缓存,它会为您的3个实体创建缓存:组织、工作流和部门
if ( cache == null ) {
LOG.unableToFindEhCacheConfiguration( name );
manager.addCache( name );
cache = manager.getEhcache( name );
LOG.debug( "started EHCache region: " + name );
}
我不确定缓存是否用于实体,因为我们的配置没有运行,但无论如何,即使警告不令人满意,我们的配置中可能缺少一些东西来避免它
可以吗?我一直使用
-spring.profiles.active=dev,fast
,但我认为在设置环境标志-Dnet.sf.ehcache.disabled=true之前,缓存并没有被禁用。我遗漏了什么吗?我尝试了--spring.profiles.active=dev,fast
,但没有从CacheConfiguration获取“Starting Ehcache”日志记录。您确定在程序args而不是JVM args中传递了profiles选项吗?您是否尝试过使用mvn-Pfast-spring-boot:run
?我已经编辑了我的原始问题,并使用fast-boot添加了我的日志。您可以看到,虽然“Starting Ehcache”并不存在,但Ehcache仍在发出警告,我认为它正在运行。当我添加特定的JVM arg-Dnet.sf.ehcache.disabled=true
时,日志的这一部分提到它正在被抑制。编辑的回答要求您创建一个问题当前的jhipster应用程序(3.5.0)不再具有“fast”配置文件,但此提示仍然有效,因为您可以轻松地将概要文件限制添加到配置类中-
if ( cache == null ) {
LOG.unableToFindEhCacheConfiguration( name );
manager.addCache( name );
cache = manager.getEhcache( name );
LOG.debug( "started EHCache region: " + name );
}