2011-11-06 6 views
0

코드를 변경했습니다. 이유는 콩을 만들 수 없다는 것입니다.스프링, 일괄 처리, 일괄 처리 재시도, 예외 : 예상 된 단일 bean이지만 발견 됨 0

다시 시도하지 않으면 작동합니다. 재시도를 추가하지 않으면 작동합니다.

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
xmlns="www.springframework.org/schema/beans" 
xmlns:xsi="www.w3.org/2001/XMLSchema-instance" 
xmlns:util="www.springframework.org/schema/util" 
xmlns:aop="www.springframework.org/schema/aop" 
xmlns:context="www.springframework.org/schema/context" 
xsi:schemaLocation=" 
    www.springframework.org/schema/beans www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    www.springframework.org/schema/util www.springframework.org/schema/util/spring-util-3.0.xsd 
    www.springframework.org/schema/aop www.springframework.org/schema/aop/spring-aop-3.0.xsd 
    www.springframework.org/schema/context www.springframework.org/schema/context/spring-context-3.0.xsd 
"> 
<bean class="com.company.team.task.taskMonitorImpl"/> 
<aop:config> 
    <aop:pointcut id="taskCheck" expression="execution(* com.company.team.task.taskMonitorImpl.*(..))" /> 
    <aop:advisor pointcut-ref="taskCheck" advice-ref="taskRetryAdvice" /> 
</aop:config> 

<bean id="taskRetryAdvice" class="org.springframework.batch.retry.interceptor.RetryOperationsInterceptor"> 
    <property name="RetryOperations" ref="taskBatchRetryTemplate" /> 
</bean> 

<bean id="taskBatchRetryTemplate" class="org.springframework.batch.retry.support.RetryTemplate"> 
    <property name="retryPolicy" ref="taskBatchRetryPolicy" /> 
    <property name="backOffPolicy" ref="ExponentialBackOffPolicy" /> 
</bean> 

<bean id="taskBatchRetryPolicy" class="org.springframework.batch.retry.policy.SimpleRetryPolicy"> 
    <constructor-arg index="0" value="3"/> 
    <constructor-arg index="1"> 
     <map> 
      <entry key="java.lang.RuntimeException" value="true"/> 
     </map> 
    </constructor-arg> 
</bean> 

<bean id="ExponentialBackOffPolicy" class="org.springframework.batch.retry.backoff.ExponentialBackOffPolicy"> 
    <property name="initialInterval" value="300" > 
     <description>Initial sleep interval value, default 300 ms</description> 
    </property> 
    <property name="maxInterval" value="30000" > 
     <description>The maximum value of the backoff period in milliseconds.</description> 
    </property> 
    <property name="multiplier" value="2.0" > 
     <description>The value to increment the exp seed with for each retry attempt.</description> 
    </property> 
</bean> 

<!--<context:annotation-config />--> 
</beans> 
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext). 
log4j:WARN Please initialize the log4j system properly. 
INFO: Detected JCL Provider: Commons Logging [commons-logging-api-1.1.1.jar] 
INFO: Detected JCL Implementation: Commons Logging [commons-logging-adapters-1.1.1.jar] 
INFO: JCL output is LOG4J 
INFO: log4j.appender.APPLICATION.File = /home/me/workspace/src/teamListingDestinationWorkflow/build/private/var/output/logs/teamListingDestinationWorkflow.log 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.company.team.teamListingDstWorkflow.teamListingDstWorkflowMain#0': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.company.team.task.taskMonitorImpl com.company.team.teamListingDstWorkflow.teamListingDstWorkflowMain.mon; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.company.team.task.taskMonitorImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.company.team.teamListingDstWorkflow.teamListingDstWorkflowMain.<clinit>(teamListingDstWorkflowMain.java:29) 
    Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.company.team.task.taskMonitorImpl com.company.team.teamListingDstWorkflow.teamListingDstWorkflowMain.mon; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.company.team.task.taskMonitorImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) 
    ... 13 more 
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.company.team.task.taskMonitorImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480) 
    ... 15 more 

내 질문 : "다시 시도"하자 사전에


감사를 작동합니다.

+0

나는 혼자만 할 수 있지만 실제로 묻는 것을 이해하지 못했습니다. 조금 더 많은 텍스트를 작성하면 도움이 될 수 있습니다. 그리고 전체 스택 추적 – Ralph

+0

가 해결 추가 할! 추가 링크 다음 http://stackoverflow.com/questions/ 84351/fixed-beannotofrequiredtype on-spring-proxy-on-a-non-singleton-be – Peter

답변

1

(1) 아마도 여기에 오류가 있습니다 : ApplicationContext ctx = new FileSystemXmlApplicationContext ("test.xml"); xxImpl monitor = ctx.getBean (xxImpl.class); ApplicationContext ctx = new ClassPathXmlApplicationContext ("file : spring-configuration/unit-testing/application-config.xml"); 메인 메인 = ctx.getBean (Main.class);

(2) 변경 xxImpl는 @Autowired가

(3) 는 CGLIB

(4) 는하지 않습니다 작품을 추가 사용합니다.

====== ====== ====== ======

마지막으로 해결!
추가

<aop:config proxy-target-class="true">    

다음 링크 : Fixing BeanNotOfRequiredTypeException on Spring proxy cast on a non-singleton bean?

+0

해결되지 않음 다음 링크를 따라 을 추가했습니다. http://stackoverflow.com/questions/841231/fixing-beannotofrequiredtypeexception-on-spring-proxy-cast-on-a-non-singleton-be – Peter