2016-07-05 7 views
0

저는 JCache의 Ehcache 구현을 사용하고 있습니다.같은 클래스에서 다른 메소드를 캐시하는 방법은 무엇입니까?

내가 말하길, 나는 클래스 Test을 가지고있다. 이 수업에서는 두 가지 방법, 즉 methodAmethodB을 사용했습니다. methodB에는 @CacheResult(cacheName = "methodB") 주석이 있습니다.

이 정보를 사용하면 캐시및 methodA에이 캐시를 사용해야한다고 추측 할 수 있습니다.

하지만 ... 작동하지 않습니다. 같은 클래스의 메소드를 사용할 때이 주석이 인터셉터를 실행하지 않는 것처럼 보입니다. 비록 클래스 Test2을 만들고이 클래스로 메서드 methodB을 옮기면 작동합니다. 그러면 예상대로이 메서드의 결과가 캐시됩니다.

동일한 클래스의 캐싱 메소드를 활성화하려면 어떻게해야합니까?

답변

1

지금까지는 CacheResult 개의 특수 효과를 고수하면 불가능 해 보입니다.

이것은 클래스가 메서드를 this 참조로 사용할 때 올바르게 인터셉터가 실행되지 않기 때문입니다 (CDI가 아니라). 캐시하고 싶다면 다른 방법을 사용하거나 그냥 정적 메서드를 호출해야합니다. 을 각 private 메서드 내부에 말하면됩니다.