나는 Spring 3.0과 ehcache를 사용한다. 빈의 일부 메소드에 @Cacheable
주석을 추가했습니다. 나는 그 빈을 다른 빈에 주입하고 있는데 이것은 내 응용 프로그램 컨텍스트 xml 파일에 등록되어있다. 응용 프로그램은 ehcache 주석을 추가하기 전에 작동했지만 (com.googlecode.ehcache-spring-annotations v 1.2.0 사용), 주석을 추가 한 후에 Spring은 주석을 포함하는 bean을 올바르게 삽입 할 수 없습니다. 내 로그 파일에 표시되는 오류 :ehcache를 사용하는 Bean을 주입 할 수 없다.
org.springframework.beans.ConversionNotSupportedException : '$ Proxy67 java.io.Serializable, org.springframework.aop.SpringProxy, org.springframework을 구현하는 유형의 속성 값을 변환하지 못했습니다. .aop.framework.Advised '를'{property} '속성에 대해'{my bean type} '유형으로 변경하십시오. 여기
은으로 Ehcache가 작동하려면 내 애플리케이션 컨텍스트에 추가 한 것입니다 :<context:annotation-config />
<context:component-scan base-package="{my root package}" />
<ehcache:annotation-driven cache-manager="cacheManager" />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml" />
</bean>
을 내가 구성이 OK라고 생각합니다, 처음에는 내가 ehcache.xml 파일을로드하는 몇 가지 문제를 가지고 있었고, 거기 때문에 그에 대한 로그의 해당 오류. 문제를 해결 한 후에 위의 오류가 발생했습니다. 봄은 ehcache를위한 캐싱 로직을 내부적으로 호출하는 빈에 대한 프록시를 생성하지만, 그 프록시를 빈 타입으로 변환 할 수 없다.
'@ Cacheable' Annotation이있는 Bean에는 인터페이스가 있고 캐시 된 것이 삽입 된 다른 bean의 인터페이스 나 클래스를 사용합니까? – Ralph
어쨌든 : 내가 기억한다면'@ Cacheable' 지원은 3.0에서 지원되지 않는 Spring 3.1 기능입니다. 당신이'javax.persistance.Cacheable'을 사용하지 않는 것을 확인하십시오! – Ralph
@Ralph, 올바른 '@ Cacheable'주석을 사용하고 있는지 확신합니다. 방금 일부 동료와 문제를상의했으며 첫 번째 의견은 올바른 대답을 가리킬 것입니다. 콩을 주입하기 위해 구체적인 클래스를 사용하는 반면, 스프링은 프록시를 인터페이스에 바인딩하는 것으로 보인다. –