Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring:无法将TaskExecuteImpl类型的值转换为java.util.concurrent.Executor_Java_Spring_Spring Mvc_Spring Boot_Spring Integration - Fatal编程技术网

Spring:无法将TaskExecuteImpl类型的值转换为java.util.concurrent.Executor

Spring:无法将TaskExecuteImpl类型的值转换为java.util.concurrent.Executor,java,spring,spring-mvc,spring-boot,spring-integration,Java,Spring,Spring Mvc,Spring Boot,Spring Integration,我有以下bean声明xml <bean id="taskExecutor" class="com.XXX.xxx.management.common.executor.TaskExecutorImpl" destroy-method="shutdown"> <constructor-arg name="threadPoolSize" value="5"/> <constructor-arg name="execut

我有以下bean声明xml

  <bean id="taskExecutor" class="com.XXX.xxx.management.common.executor.TaskExecutorImpl"
        destroy-method="shutdown">
        <constructor-arg name="threadPoolSize" value="5"/>
        <constructor-arg name="executionQueueCapacity" value="1000"/>
        <constructor-arg name="typeLimit" value="5"/>
    </bean>

下面是TaskExecutorImpl的代码

    import java.util.AbstractQueue;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.List;
    import java.util.TreeSet;
    import java.util.concurrent.BlockingQueue;
    import java.util.concurrent.CancellationException;
    import java.util.concurrent.ConcurrentHashMap;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.FutureTask;
    import java.util.concurrent.RejectedExecutionException;
    import java.util.concurrent.ThreadPoolExecutor;
    import java.util.concurrent.TimeUnit;
    import java.util.concurrent.TimeoutException;
    import java.util.concurrent.atomic.AtomicInteger;
    import java.util.concurrent.locks.Condition;
    import java.util.concurrent.locks.ReentrantLock;

    import javax.annotation.PostConstruct;

    public class TaskExecutorImpl implements TaskExecutor {
        private final int threadPoolSize;
        private final int executionQueueCapacity;
        private final int typeLimit;

        private BlockingPriorityTaskQueue executionQueue;
        private ExecutorService threadPool;

        private ConcurrentHashMap<String, AtomicInteger> executionByTypeMap = new ConcurrentHashMap<>();

        /**
         * Main lock guarding all access
         */
        final ReentrantLock mainLock;
        /**
         * Condition for waiting takes
         */
        private final Condition notEmpty;
        /**
         * Condition for waiting puts
         */
        private final Condition notFull;

        public TaskExecutorImpl(int threadPoolSize, int executionQueueCapacity, int typeLimit) {
            this.threadPoolSize = threadPoolSize;
            this.executionQueueCapacity = executionQueueCapacity;
            this.typeLimit = typeLimit;

            mainLock = new ReentrantLock();
            notEmpty = mainLock.newCondition();
            notFull = mainLock.newCondition();
        }

        @PostConstruct
        @SuppressWarnings("unchecked")
        public void initialize() {
            executionQueue = new BlockingPriorityTaskQueue(executionQueueCapacity);
            threadPool = new ThreadPoolExecutor(threadPoolSize, threadPoolSize, 0L, TimeUnit.MILLISECONDS,
                    (BlockingQueue) executionQueue);

            // create core threads, required for type control
            for (int i = 0; i < threadPoolSize; i++) {
                threadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        // nothing here
                    }
                });
            }
        } 

and other Methdods implementation so on
import java.util.AbstractQueue;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.Comparator;
导入java.util.Iterator;
导入java.util.List;
导入java.util.TreeSet;
导入java.util.concurrent.BlockingQueue;
导入java.util.concurrent.CancellationException;
导入java.util.concurrent.ConcurrentHashMap;
导入java.util.concurrent.ExecutionException;
导入java.util.concurrent.ExecutorService;
导入java.util.concurrent.FutureTask;
导入java.util.concurrent.RejectedExecutionException;
导入java.util.concurrent.ThreadPoolExecutor;
导入java.util.concurrent.TimeUnit;
导入java.util.concurrent.TimeoutException;
导入java.util.concurrent.AtomicInteger;
导入java.util.concurrent.locks.Condition;
导入java.util.concurrent.locks.ReentrantLock;
导入javax.annotation.PostConstruct;
公共类TaskExecuteImpl实现TaskExecutor{
私有最终int线程池大小;
专用最终int执行队列容量;
私人最终整数类型限制;
私有阻塞优先级任务队列执行队列;
私人服务线程池;
私有ConcurrentHashMap executionByTypeMap=新ConcurrentHashMap();
/**
*保护所有通道的主锁
*/
最终重入锁主锁;
/**
*等候条件
*/
私人最终条件不空;
/**
*等待看跌期权的条件
*/
私人最终条件未满;
公共TaskExecuteImpl(int threadPoolSize、int executionQueueCapacity、int typeLimit){
this.threadPoolSize=threadPoolSize;
this.executionQueueCapacity=executionQueueCapacity;
this.typeLimit=typeLimit;
mainLock=new ReentrantLock();
notEmpty=mainLock.newCondition();
notFull=mainLock.newCondition();
}
@施工后
@抑制警告(“未选中”)
公共无效初始化(){
executionQueue=新建BlockingPriorityTaskQueue(executionQueueCapacity);
threadPool=新的ThreadPoolExecutor(threadPoolSize,threadPoolSize,0L,TimeUnit.毫秒,
(阻塞队列)执行队列);
//创建类型控制所需的核心线程
对于(int i=0;i
当我启动上下文时,我得到以下错误

2017-06-01 06:50:22.625 GMT错误localhost-startStop-1 ContextLoader:331-上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.context.annotation.internalAsyncAnnotationProcessor”的bean时出错:初始化bean失败;嵌套异常为org.springframework.beans.ConversionNotSupportedException:转换类型为“com.xxx.xxx.management.common.execu”的属性值失败tor.TaskExecuteImpl'为属性“Executor”的必需类型“java.util.concurrent.Executor”;嵌套异常为java.lang.IllegalStateException:无法将类型[com.xxx.xxx.management.common.Executor.TaskExecuteImpl]的值转换为必需类型[java.util.concurrent.Executor]对于属性“executor”:未找到匹配的编辑器或转换策略 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 位于org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:743) 位于org.springvmframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) 位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853) 位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753) 位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729) 位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 位于org.apache.catalina.startup.HostConfig.deploy目录(HostConfig.java:1092) 位于org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在java.util.concurrent