간단한 POJO를 저장하는 맵이 있습니다. 키는 POJO의 id 필드입니다.스프링 부트 @CachePut 값이 null입니다.
JobModel jm = new JobModel();
cachemap.put(jm.getId(), jm);
아직도, 그것은 캐시마다에 null 값을 삽입합니다 : 봄의 @CachePut 주석에서 , 나는 이런 식으로 뭔가를 기대했다. 캐시를 구성 할 때 null 값을 허용하지 않으면 null이 삽입되고 있다는 예외가 발생합니다.
코드 : 인터페이스를 구현
@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;
}
그리고 다오 클래스는, 주석이 아니라에서 인터페이스를 구현하는 다오의 (클래스에 선언되어있다 내가 시도
@CachePut(value = CacheNames.CACHE_JOB,key = "jm.id")
@Transactional
@Override
public void insert(JobModel jm) {...}
) 자체 인터페이스 jm.id
, jm.getid()
, #a0.getId()
. 그래도 내가 얻을 때마다 com.google.common.base.Preconditions.checkNotNull()
(또는 간단한 null 삽입) 예외가 발생합니다. 난 거기에 중단 점을 배치하고 그 키가 내가 기대했던 것 (guid, string)이지만 값이 null이라는 것을 알 수 있습니다.
귀하의 삽입 방법을 사용하여 캐시 원하는 값을 반환해야 it always causes the method to be invoked and its result to be stored in the associated cache.
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/cache/annotation/CachePut.html에서 봄 워드 프로세서 당
RestController는 dao 객체를 호출하고 CachePut을 거기 옮겨야한다고 생각하지 않습니다 (또한 아무것도 반환하지 않습니다) – appl3r