2014-07-10 3 views
1

현재 일부 프로젝트를 maven으로 변환 중이고 전쟁이 시작될 때 문제가 발생합니다. 그래서 저는 매우 간단한 ehcache maven 프로젝트를 만들었고 클래스 로더 유형의 이슈를 얻었습니다.간단한 ehcache 프로젝트 예외

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.test</groupId> 
<artifactId>MVCTest</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>war</packaging> 
<properties> 
    <spring.version>3.2.4.RELEASE</spring.version> 
</properties> 

<dependencies> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Spring 3 dependencies --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.ehcache-spring-annotations</groupId> 
     <artifactId>ehcache-spring-annotations</artifactId> 
     <version>1.2.0</version> 
    </dependency> 
</dependencies> 
<build> 
    <finalName>SpringMVC</finalName> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

봄 설정 : http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd ">

여기 내 치어입니다
<context:component-scan base-package="com.test.common.controller" /> 


<ehcache:annotation-driven /> 

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> 
    <property name="cacheManager" ref="ehcache" /> 
</bean> 

<bean id="ehcache" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="/WEB-INF/ehcache.xml" /> 
</bean> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/pages/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

springmvc 부분에서 아직 ehcache를 사용하지 않고 HelloWorld 유형의 mvc 설정이 있습니다.

이 던진 예외입니다 : SEVERE : 컨텍스트 초기화 org.springframework.beans.factory.BeanCreationException 실패 : 작업 공간 \ 봄 \ \ 사용자 \ umxa894 : 오류 이름 'helloController'파일에 정의 된 [C와 콩을 만드는. metadata.plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ MVCTest \ WEB-INF \ classes \ com \ test \ common \ controller \ HelloController.class] : Bean 초기화에 실패했습니다. 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름이 'com.googlecode.ehcache.annotations.config.internalEhCacheCachingAdvisor'인 빈을 생성하는 중 오류가 발생했습니다 : bean 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut # 0 'bean 속성'pointcut '설정 중; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름이 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut # 0'인 bean을 생성하는 중 오류가 발생했습니다 : bean 'com.googlecode.ehcache.annotations.impl에 대한 참조를 해석 할 수 없습니다. CacheAttributeSourceImpl # 0 '빈 속성'cacheAttributeSource '설정하는 동안; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름이 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl # 0'인 빈을 생성하는 중 오류가 발생했습니다 : 빈 초기화에 실패했습니다. 중첩 예외는 org.springframework.beans.ConversionNotSupportedException : 'org.springframework.cache.ehcache.EhCacheCacheManager'유형의 속성 값을 'cacheManager'속성의 필수 유형 'net.sf.ehcache.CacheManager'로 변환하는 데 실패했습니다. 중첩 예외가 java.lang.IllegalStateException : 'cacheManager'속성에 대해 [org.springframework.cache.ehcache.EhCacheCacheManager] 유형의 값을 필수 유형 [net.sf.ehcache.CacheManager]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략을 찾을 수 없습니다. org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:529) (AbstractAutowireCapableBeanFactory.java:458) org.springframework에서 에서 . beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support .AbstractBeanFactory. doGetBean (AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java : 628) org.springframework.web에서 org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:479에서 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:932) 에서 ) .org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java에서 org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:294) 에서 context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:389) : 112) at org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4973) at org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5467) at org.apache.catalina. util.LifecycleBase.start (LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1549) at java.util.concurrent.FutureTask (알 수없는 소스) 에서 java.util.concurrent.ThreadPoolExecutor.runWorker (알 수없는 소스) 에서 java.util.concurrent.ThreadPoolExecutor에서 $ Worker.run (알 수없는 소스) 에서 java.lang.Thread.run (알 수없는 소스) ) 에 의해 발생 : org.springframework.beans.factory.BeanCreationException : 'com.googlecode.ehcache.annotations.config.internalEhCacheCachingAdvisor'라는 이름의 빈을 만드는 중 오류가 발생했습니다 : 'com.googlecode.ehcache.annotations.impl'bean에 대한 참조를 확인할 수 없습니다. CacheStaticMethodMatcherPointcut # 0 '빈 속성'pointcut '설정 중; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름이 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut # 0'인 bean을 생성하는 중 오류가 발생했습니다 : bean 'com.googlecode.ehcache.annotations.impl에 대한 참조를 해석 할 수 없습니다. CacheAttributeSourceImpl # 0 '빈 속성'cacheAttributeSource '설정하는 동안; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름이 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl # 0'인 빈을 생성하는 중 오류가 발생했습니다 : 빈 초기화에 실패했습니다. 중첩 예외는 org.springframework.beans.ConversionNotSupportedException : 'org.springframework.cache.ehcache.EhCacheCacheManager'유형의 속성 값을 'cacheManager'속성의 필수 유형 'net.sf.ehcache.CacheManager'로 변환하는 데 실패했습니다. 중첩 예외가 java.lang.IllegalStateException : 'cacheManager'속성에 대해 [org.springframework.cache.ehcache.EhCacheCacheManager] 유형의 값을 필수 유형 [net.sf.ehcache.CacheManager]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략을 찾을 수 없습니다. org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary에서 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueResolver.java:329) (BeanDefinitionValueResolver.java:107) org.springframework에서 에서 . org.springframework.b에서 beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues ​​(AbstractAutowireCapableBeanFactory.java:1387) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1128)에서 eans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:519) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:458)에서 org.springframework.beans.factory.support에서 . org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean에서 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:223) 에서 AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:295) (AbstractBeanFactory .java : 292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:198) at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans (BeanFactoryAd visorRetrievalHelper.java:86) org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors (AbstractAdvisorAutoProxyCreator.java:101) org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors에서 에서 (AbstractAdvisorAutoProxyCreator.java:87) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization (AbstractAutoProxyCreator.java에서 org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary (AbstractAutoProxyCreator.java:359) 에서 getAdvicesAndAdvisorsForBean (AbstractAdvisorAutoProxyCreator.java:69) : 322) 조직에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1488) 에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization (AbstractAutowireCapableBeanFactory.java:409) 에서 . springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:521) ... 20 자세히 원인 : org.springframework.beans.factory.BeanCreationException : 'com.googlecode.ehcache.annotations.impl.CacheStaticMethodMatcherPointcut # 0'이라는 이름의 빈을 만드는 동안 오류가 발생했습니다 : bean 'com.googlecode.ehcache.annotations.impl에 대한 참조를 확인할 수 없습니다. .CacheAttributeSourceImpl # 0 '빈 속성'cacheAttributeSource '설정하는 동안; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름이 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl # 0'인 빈을 생성하는 중 오류가 발생했습니다 : 빈 초기화에 실패했습니다. 중첩 예외는 org.springframework.beans.ConversionNotSupportedException : 'org.springframework.cache.ehcache.EhCacheCacheManager'유형의 속성 값을 'cacheManager'속성의 필수 유형 'net.sf.ehcache.CacheManager'로 변환하는 데 실패했습니다. 중첩 예외가 java.lang.IllegalStateException : 'cacheManager'속성에 대해 [org.springframework.cache.ehcache.EhCacheCacheManager] 유형의 값을 필수 유형 [net.sf.ehcache.CacheManager]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략을 찾을 수 없습니다. org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary에서 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueResolver.java:329) (BeanDefinitionValueResolver.java:107) org.springframework에서 에서 . org.springframework.b에서 beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues ​​(AbstractAutowireCapableBeanFactory.java:1387) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1128)에서 eans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:519) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:458)에서 org.springframework.beans.factory.support에서 . org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean에서 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:223) 에서 AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:295) (AbstractBeanFactory .java : 292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueRe solver.java:323) ... 38 more 에 의해 발생 : org.springframework.beans.factory.BeanCreationException : 'com.googlecode.ehcache.annotations.impl.CacheAttributeSourceImpl # 0'이름의 빈을 생성하는 중 오류가 발생했습니다 : Bean 초기화 실패한; 중첩 예외는 org.springframework.beans.ConversionNotSupportedException : 'org.springframework.cache.ehcache.EhCacheCacheManager'유형의 속성 값을 'cacheManager'속성의 필수 유형 'net.sf.ehcache.CacheManager'로 변환하는 데 실패했습니다. 중첩 예외가 java.lang.IllegalStateException : 'cacheManager'속성에 대해 [org.springframework.cache.ehcache.EhCacheCacheManager] 유형의 값을 필수 유형 [net.sf.ehcache.CacheManager]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략을 찾을 수 없습니다. 조직에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:458) 에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:529) 에서 .springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference에서 .support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:292) org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:194)에서 (BeanDefinitionValueResolver.java:323) ... 48 more 발생 원인 : org.springframework.beans.ConversionNotSupportedException : 'org.springframework.cache.ehcache.EhCacheCacheManager'유형의 속성 값을 필수 유형 'net.sf로 변환하는 데 실패했습니다. .ehcache.CacheManager '속성'c acheManager '; 중첩 예외가 java.lang.IllegalStateException : 'cacheManager'속성에 대해 [org.springframework.cache.ehcache.EhCacheCacheManager] 유형의 값을 필수 유형 [net.sf.ehcache.CacheManager]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략을 찾을 수 없습니다. org.springframework.beans.BeanWrapperImpl.convertIfNecessary (BeanWrapperImpl.java:463) org.springframework.beans.BeanWrapperImpl.convertForProperty에서 org.springframework.beans.BeanWrapperImpl.convertForProperty (BeanWrapperImpl.java:494) 에서 (BeanWrapperImpl에 . 자바 : org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty (AbstractAutowireCapableBeanFactory.java:1433) 에서 488) (AbstractAutowireCapableBeanFactory.java:1392)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean에서 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1128)에서 (AbstractAutowireCapableBeanFactory.java:519) ... (54)보다 발생 원인 : java.lang.IllegalStateException : [org.springframework.cache.ehcache.EhCacheCacheManager] 유형의 값을 'cacheManager'속성의 필수 유형 [net.sf.ehcache.CacheManager]으로 변환 할 수 없습니다 : 일치하는 편집기 또는 변환 전략이 없습니다. 더

01 org.springframework.beans.BeanWrapperImpl.convertIfNecessary (BeanWrapperImpl.java:448) ... 60 org.springframework.beans.TypeConverterDelegate.convertIfNecessary (TypeConverterDelegate.java:264) 에서 발견

무엇이 누락 되었습니까? 나는 그것이 단순한 것으로 가정하고 있지만, 프로젝트는 단순한 ehcache 프로젝트를위한 거의 모든 hello world 유형처럼 보입니다.

답변

2

스프링의 EhCacheCacheManager 클래스는 EhCache CacheManager 인스턴스의 래퍼 역할을합니다. EhCacheManagerFactoryBean은 이미 EhCacheCacheManager 오브젝트에 랩핑 된 bean을 생성합니다. 따라서 기본적으로 이미 포장 된 객체를 포장하려고합니다. 대신 단지 (공장 사용) 한 콩을 작성하고 당신이 원하는 것을 얻을해야합니다

<bean id="cacheManager" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="/WEB-INF/ehcache.xml" /> 
</bean> 

을 당신은으로 Ehcache CacheManager 인스턴스를 참조해야하는 경우,이 cacheManager 빈의 getCacheManager() 필드에서 사용할 수 있습니다.