2015-07-31 3 views
1

Я хочу, чтобы EHCache был в производстве, но не в разработке, поскольку я стараюсь возиться с записями базы данных в разработке.Каков наилучший способ отключить ehcache в JHipster

Единственная вещь, с которой я столкнулся после поиска, - это возможность JVM полностью отключить кеш -Dnet.sf.ehcache.disabled=true, но почему-то это не идеальное решение.

Лучше всего было бы иметь опцию в application-dev.yml. Я применил timeToLiveSeconds и сохранил его (1), но он, похоже, не имел никакого эффекта.

Я пытался добавить API в моем REST службы, как это, но это, похоже, не имеют никакого эффекта либо:

/** 
* 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

Если посмотреть на классе CacheConfiguration, вы увидите:

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

Так что, если вы используете быстрый профиль, кэширование отключен, поэтому либо вы используете этот профиль, либо вы изменяете аннотацию, чтобы включить кеширование только в профиле prod.

@Profile(Constants.SPRING_PROFILE_PRODUCTION) 
public class CacheConfiguration { 

Вы правы, код EHCache где выдается журнал WARN создает кэш в любом случае, и это делает его для 3-х лиц: Org, Workflow и Департамента.

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

Я не уверен, что кэш используется для сущностей, как наша конфигурация не выполняется, но в любом случае, даже предупреждение не удовлетворяет, то, вероятно, что-то не хватает в нашей конфигурации, чтобы избежать этого.

Не могли бы вы ответить open an issue?

+0

Я использовал '--spring.profiles.active = dev, fast' все время, но я думаю, что кеширование не было отключено, пока я не установил флаг среды' -Dnet.sf.ehcache.disabled = true'. Я что-то упускаю? – user1880957

+0

Я пробовал '--spring.profiles.active = dev, fast', и я не получил регистрацию« Starting Ehcache »из CacheConfiguration. Вы уверены, что вы передали опцию профилей в программных аргументах, а не в JVM args? Вы пробовали использовать 'mvn -pfast spring-boot: run'? –

+0

Я отредактировал мой оригинальный вопрос и добавил мой журнал с быстрой загрузкой. Вы можете видеть, что, хотя «Запуск Ehcache» не существует, Ehcache все еще дает это предупреждение, и я действительно думаю, что он работает. Когда я добавляю конкретную JVM arg '-Dnet.sf.ehcache.disabled = true', эта часть журнала упоминает, что она подавляется. – user1880957

Смежные вопросы