2017-06-20 3 views
0

Ich versuche, mehrere ehcahe.xml-Konfigurationsdateien anstelle von Modulen zu verwenden, die definierte Caches verwenden.Spring Boot ehcache in Multi-Maven-Projekt

Wann ist die ehcache.xml-Konfiguration unter den Ressourcen des app-web-Moduls abgelegt, von wo aus die Spring-Boot-Anwendung gestartet wird? @EnableCaching.

@SpringBootApplication 
@Import({ CommonApp.class, CoreConfig.class}) 
@EnableSwagger2 
@EnableCaching 
public class WebApplication extends WeblogicMvcConfigurerAdapter { 
} 

Aber wann ist die Konfiguration unter dem App-Core-Modul platziert und @EnableCaching bewegt wird unter CoreConfig die durch WebApplication importiert wird zur Laufzeit ausfällt.

@Configuration 
@ComponentScan 
@EnableCaching 
public class CoreConfig { 

} 

Wenn @Cacheable Methode aufgerufen wird, ich bin immer

java.lang.IllegalArgumentException: Cannot find cache named 'systemParameterCache' 

Meine Idee ist es, dass jedes Modul eigene ehcache.xml Konfiguration mit dem Cache-Speicher aufweisen kann, die zu diesem Modul gehören.

Ist es möglich, so zu verwenden? Was mache ich falsch?

Danke!

Antwort

0

Es ist möglich. Aber ich würde das nicht empfehlen. Ein Cache-Manager in einer Anwendung reicht aus. Viele zu haben ist für nichts ressourcenaufwendig. Wenn Sie Probleme haben, Ihren Caches unterschiedliche Namen zu geben, schlage ich vor, dass Sie ein Modulpräfix verwenden.

Dann bin ich mir nicht sicher, was Sie mit Modulen meinen. @EnableCaching wird voraussichtlich einmal in einer Anwendung angegeben.

Aber wenn es nur auf CoreConfig angegeben ist, sollte es funktionieren. Sie müssen jedoch weiterhin systemParameterCache in Ihrer Cache-Konfiguration erstellen. Es scheint hier dein Problem zu sein.

+0

Ich wollte nur einen CacheManager in 'common' definieren und ihn über mehrere Module teilen (mit' shared' für [EhCacheManagerFactoryBean] (https://docs.spring.io/spring/docs/current/javadoc- api/org/springframework/cache/ehcache/EhCacheManagerFactoryBean.html # setShared-boolean-)) und dann diese CacheManager-Instanz im benutzerdefinierten Cache-Provider für das entsprechende Modul und den Cache mit der von diesem Modul verwendeten 'ehcache.xml'-Konfiguration konfiguriert. Ich war nur neugierig, wenn Spring Boot standardmäßig so etwas bietet. Wie auch immer, danke für Ihre Antwort! – Kuciin