2012-07-09 110 views
6

我们有一个用Spring 3.0编写的应用程序。我注意到@Async不起作用。我周围搜索,注意到我需要添加春季异步不起作用

<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> 
<task:executor id="myExecutor" pool-size="5"/> 
<task:scheduler id="myScheduler" pool-size="10"/> 

但是,当我这样做,我得到一个异常。

这里是我的配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:batch="http://www.springframework.org/schema/batch" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:int-jmx="http://www.springframework.org/schema/integration/jmx" 
xmlns:int-mail="http://www.springframework.org/schema/integration/mail" 
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" 
xmlns:jms="http://www.springframework.org/schema/jms" xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" 
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" 
xmlns:ws="http://www.springframework.org/schema/web-services" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.5.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
     http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/integration/jmx http://www.springframework.org/schema/integration/jmx/spring-integration-jmx.xsd 
     http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd 
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd 
     http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
     http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-1.5.xsd"> 

<bean id="applicationProperties" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
      <value>classpath:version.properties</value> 
     </list> 
    </property> 
    <property name="ignoreResourceNotFound" value="true" /> 
    <property name="ignoreUnresolvablePlaceholders" value="true" /> 
</bean> 

<context:annotation-config /> 
<context:component-scan base-package="package" /> 

<aop:aspectj-autoproxy /> 

<bean id="globalConfig" class="package.GlobalConfig" /> 

<mvc:annotation-driven /> 

<amq:connectionFactory id="connectionFactory1" 
    brokerURL="tcp://localhost:61616?jms.useAsyncSend=true" /> 

<amq:connectionFactory id="connectionFactory2" 
    brokerURL="tcp://localhost:61616?jms.useAsyncSend=true" /> 

<bean id="singleConnectionFactory1" 
    class="org.springframework.jms.connection.SingleConnectionFactory" 
    p:targetConnectionFactory-ref="connectionFactory1" 
    p:reconnectOnException="true" /> 

<bean id="singleConnectionFactory2" 
    class="org.springframework.jms.connection.SingleConnectionFactory" 
    p:targetConnectionFactory-ref="connectionFactory2" 
    p:reconnectOnException="true" /> 

<bean id="cachingConnectionFactory1" 
    class="org.springframework.jms.connection.CachingConnectionFactory" 
    p:targetConnectionFactory-ref="singleConnectionFactory1" 
    p:sessionCacheSize="100" /> 

<bean id="cachingConnectionFactory2" 
    class="org.springframework.jms.connection.CachingConnectionFactory" 
    p:targetConnectionFactory-ref="singleConnectionFactory2" 
    p:sessionCacheSize="100" /> 

<bean id="jmsTemplate1" class="org.springframework.jms.core.JmsTemplate" 
    p:connectionFactory-ref="cachingConnectionFactory1" /> 

<bean id="jmsTemplate2" class="org.springframework.jms.core.JmsTemplate" 
    p:connectionFactory-ref="cachingConnectionFactory2" /> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass"> 
     <value> 
      org.springframework.web.servlet.view.tiles2.TilesView 
     </value> 
    </property> 
</bean> 

<bean id="messageSource" 
    class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
     <list> 
      <value>AppBundle</value> 
     </list> 
    </property> 
</bean> 

<!-- Declare the Interceptor --> 
<mvc:interceptors> 
    <bean class="package.PipelineInterceptor" /> 
</mvc:interceptors> 

<!-- Declare the Resolver --> 
<bean id="localeResolver" 
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> 




<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/tiles.xml</value> 
     </list> 
    </property> 
</bean> 



<bean id="otherViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver" 
    p:order="1" p:location="/WEB-INF/views.xml" /> 


</beans> 

这里是例外,我得到:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationBrowserController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) 
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:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
... 29 more 
Caused by: java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
... 31 more 
Jul 9, 2012 2:13:25 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet threw load() exception 
java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
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:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
Jul 9, 2012 2:13:25 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Jul 9, 2012 2:13:25 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Jul 9, 2012 2:13:25 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 14033 ms 
Jul 9, 2012 2:13:25 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'expresso' 
Jul 9, 2012 2:13:26 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationBrowserController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285) 
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:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private package.srv.homepage.impl.HomepageSrvImpl  package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl; nested exception is java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field  package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
... 33 more 
Caused by: java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
... 35 more 
Jul 9, 2012 2:13:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet expresso 
java.lang.IllegalArgumentException: Can not set package.srv.homepage.impl.HomepageSrvImpl field package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
at java.lang.reflect.Field.set(Field.java:657) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
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:291) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) 
at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 

什么建议吗?

+0

请你的配置文件削减到只有相关部分。你会发现我们不喜欢通过大量不必要的代码来查找与你的问题相关的行。 – 2012-07-09 21:48:46

+0

哈哈! 'Spring异步不起作用' – 2012-07-09 22:22:30

回答

4

对于@Async工作(我假设基于注解的配置),你需要做两件事情:

  1. <task:annotation-driven/>在你的配置标注有@Async

  • 公共方法...就是这样。您的例外不表示@Async不起作用。这表示字段HomepageSrvImpl存在自动装配问题。

  • 0

    堆栈跟踪的这一部分指出错误是什么。字段主页SrvImpl应该是接口类型而不是具体类。如果你不知道添加 LocationBrowserController和HomepageSrvImpl的定义 - 只是类& autowired章节。

    Caused by: java.lang.IllegalArgumentException: Can not set 
    package.srv.homepage.impl.HomepageSrvImpl field 
    package.mvc.controller.browser.LocationBrowserController.homepageSrvImpl to $Proxy24 
    
    1

    我有这个同样的问题...我有一大堆的实现,我想自动装配接口差异“IMPLS”,问题是,我是自动装配的实现,而不是接口.. 。一旦我开始自动装配界面(用@ Qaulifier),一切都可以正常工作!

    0

    我也遇到了同样的问题。

    将属性proxy-target-class="true"添加到<task:annotation-driven/>为我修复了它。我现在的定义如下:

    <task:annotation-driven 
        executor="myExecuter" scheduler="myScheduler" proxy-target-class="true"/> 
    

    这就解决了我的问题(使用Spring 3.1.1)。 查看Using @Transaction annotation with @Autowired - Spring的解释。

    2

    这是一个老问题,但由于目前为止还没有接受答案,所以我们走。

    问题的实质是如何运作@Async机制。 对正在发生的事情的提示是堆栈跟踪的这一部分,具体是什么,都标有大胆:

    产生的原因:java.lang.IllegalArgumentException异常:无法设置 package.srv.homepage.impl.HomepageSrvImpl场 package.mvc.controller.browser.LocationBrowserController。homepageSrvImpl 至$ Proxy24

    正在发生的事情是,为了能够拦截标有@Async方法的调用,春天需要创建一个代理吧。

    正如另一个答案指出了用户“厄尔尼诺刮破”,你可能宣布自动装配Autowired属性的类型,而不是使用一个接口,但使用的实际执行。 (请注意,在堆栈跟踪误差不明确指向被代理的对象,而是需要把它自动连接作为属性的对象,但它仍然指向您的故障排除在正确的方向)。

    ,直到你开始使用@Async注解,因为它强制冲刺创建代理并不能自动装配它这个工程确定。

    我还没有测试过,但我认为这会发生在任何其他方面Spring需要隔行扫描您的代码(例如@Transactional)。

    +0

    @Arpit感谢您的编辑。不过,我已经标志着大胆的(注意它说,它上面的文字“......在大胆”答案的重要组成部分,而现在失去了,因为你把不处理大胆正常。固定它的报价。谢谢! – jotadepicas 2017-03-07 17:46:31