在JHipster中禁用ehcache的最佳方法是什么?

时间:2015-07-31 23:12:37

标签: java mysql database ehcache jhipster

我希望EHCache在制作中,但不是在开发中,因为我倾向于在开发中使用数据库记录。

我在搜索后遇到的唯一一件事就是这个JVM选项可以完全禁用缓存-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);
}

另外,这个问题的推论,我在这里的 CacheConfiguration.java 中放了一个调试断点,但它似乎永远不会被击中。

@PreDestroy
public void destroy() {

非常感谢任何帮助!

以下是我使用快速启动启动的完整日志:

[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]

1 个答案:

答案 0 :(得分:2)

如果您查看CacheConfiguration类,您将看到:

@Profile("!" + Constants.SPRING_PROFILE_FAST)
public class CacheConfiguration {

因此,如果您使用快速配置文件,则禁用缓存,因此您要么使用此配置文件,要么更改注释以仅在prod配置文件中启用缓存。

@Profile(Constants.SPRING_PROFILE_PRODUCTION)
public class CacheConfiguration {

你说得对,发布WARN日志的ehcache代码无论如何都会创建一个缓存,它会为你的3个实体创建:Org,Workflow和Department。

        if ( cache == null ) {
            LOG.unableToFindEhCacheConfiguration( name );
            manager.addCache( name );
            cache = manager.getEhcache( name );
            LOG.debug( "started EHCache region: " + name );
        }

我不确定缓存是否用于实体,因为我们的配置没有运行,但无论如何即使警告也不满意,我们的配置中可能缺少一些以避免它。

请问open an issue