Ich habe mit Spring -Cache -Abstraktion und EHCache gearbeitet. Ich verwende die @cacheable Annotation für eine Zielmethode wie SO:
Code: Select all
@Component
public class DataService {
@Cacheable(value="movieFindCache", key="#name")
public String findByDirector(String name) {
return "hello";
}
}
< /code>
Dies ist mein JUNIT -Test: < /p>
public class ServiceTest extends AbstractJUnit4SpringContextTests{
@Resource
private DataService dataService;
@Test
public void test_service() {
System.err.println(dataService.findByDirector("Hello"));
}
}
< /code>
Dies funktioniert nicht gut, wenn ich mit dem Junit -Test debuggen. Es wirft eine IllegalArgumentException
wie folgt aus:
java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?) CacheableOperation[public java.lang.String com.eliteams.quick4j.web.service.ExcelDataService.getCarData()] caches=[movieFindCache] | key='#name' | condition='' | unless=''
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.cache.interceptor.CacheAspectSupport.generateKey(CacheAspectSupport.java:315)
at org.springframework.cache.interceptor.CacheAspectSupport.collectPutRequests(CacheAspectSupport.java:265)
< /code>
Ich habe die folgende Konfiguration: < /p>
ApplicationContext.xml:
< /code>
eHcache.xml:
< /code>
Hinweis: Wenn ich die "Schlüssel" in den Annotationen @cacheable nicht angeben, funktioniert es. Konfiguration? Anmerkungen?
Ich habe mit Spring -Cache -Abstraktion und EHCache gearbeitet. Ich verwende die @cacheable Annotation für eine Zielmethode wie SO:
[code]@Component
public class DataService {
@Cacheable(value="movieFindCache", key="#name")
public String findByDirector(String name) {
return "hello";
}
}
< /code>
Dies ist mein JUNIT -Test: < /p>
public class ServiceTest extends AbstractJUnit4SpringContextTests{
@Resource
private DataService dataService;
@Test
public void test_service() {
System.err.println(dataService.findByDirector("Hello"));
}
}
< /code>
Dies funktioniert nicht gut, wenn ich mit dem Junit -Test debuggen. Es wirft eine IllegalArgumentException [/code] wie folgt aus:
java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?) CacheableOperation[public java.lang.String com.eliteams.quick4j.web.service.ExcelDataService.getCarData()] caches=[movieFindCache] | key='#name' | condition='' | unless=''
at org.springframework.util.Assert.notNull(Assert.java:112)
at org.springframework.cache.interceptor.CacheAspectSupport.generateKey(CacheAspectSupport.java:315)
at org.springframework.cache.interceptor.CacheAspectSupport.collectPutRequests(CacheAspectSupport.java:265)
< /code>
Ich habe die folgende Konfiguration: < /p>
ApplicationContext.xml:
< /code>
eHcache.xml:
< /code>
Hinweis: Wenn ich die "Schlüssel" in den Annotationen @cacheable nicht angeben, funktioniert es. Konfiguration? Anmerkungen?