Ich habe eine Karte, die einfache POJOs speichert, der Schlüssel ist das ID-Feld des POJO. Von Spring @CachePut Anmerkung, erwartete ich etwas wie folgt aus:Spring Boot @CachePut Wert ist Null
JobModel jm = new JobModel();
cachemap.put(jm.getId(), jm);
Dennoch ist es NULL-Werte in den Cache fügt jedes Mal. Wenn ich beim Konfigurieren des Cache null Werte verbiete, bekomme ich eine Ausnahme, die besagt, dass null eingefügt wird.
Code:
@SpringBootApplication
@EnableScheduling
@EnableAutoConfiguration
@EnableCaching
public class Application {
public static void main(String[] args) {
applicationContext = SpringApplication.run(Application.class, args);
}
...
private GuavaCache jobCache() {
return new GuavaCache(CacheNames.CACHE_JOB, CacheBuilder.newBuilder()
.maximumSize(999999)
.build(),
false);// or true, still null values
}
@Bean(name = "cacheManager")
public CacheManager cacheManager() {
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
simpleCacheManager.setCaches(Arrays.asList(
jobCache(),....
));
return simpleCacheManager;
}
Und die Dao-Klasse, eine Schnittstelle implementieren, werden die Anmerkungen in der (die Klasse Dao erklärt, die die Schnittstelle implementiert, nicht in der Schnittstelle selbst)
@CachePut(value = CacheNames.CACHE_JOB,key = "jm.id")
@Transactional
@Override
public void insert(JobModel jm) {...}
ich versuchte jm.id
, jm.getid()
, #a0.getId()
. Dennoch, jedes Mal, wenn ich bekomme und Ausnahme von com.google.common.base.Preconditions.checkNotNull()
(oder nur eine einfache Null einfügen). Ich habe einen Haltepunkt dort platziert und ich kann sehen, dass der Schlüssel ist, was ich erwartet habe (eine Guid, String), aber der Wert ist null.
Der RestController ruft das Dao-Objekt auf und ich denke nicht, dass ich dort einen CachePut verschieben sollte (es gibt auch nichts zurück) – appl3r