gpt4 book ai didi

java - 无法使用 Spring 创建 java.util.concurrent.ThreadPoolExecutor 的 bean

转载 作者:行者123 更新时间:2023-11-30 07:12:47 27 4
gpt4 key购买 nike

我正在尝试创建一个 java.util.concurrent.ThreadPoolExecutor 的 bean,下面是我的 spring 配置文件中的内容:

<bean id="threadPoolExector" class="java.util.concurrent.ThreadPoolExecutor" lazy-init="true" scope="singleton">
<property name="corePoolSize" value="${corePoolSize}"/>
<property name="maximumPoolSize" value="${maximumPoolSize}"/>
<property name="keepAliveTime" value="${keepAliveTime}"/>
<property name="unit" value="java.util.concurrent.TimeUnit.SECONDS"/>
<property name="workQueue" ref="abcBlockingQueueImpl"></property>
</bean>

<bean id="abcBlockingQueueImpl" class="my.package.AbcBlockingQueueImpl" lazy-init="true" scope="singleton"/>

然后我尝试创建如下:

ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) applicationContext.getBean("threadPoolExector");

但是我得到了以下异常,我知道 ThreadPoolExecutor 没有 no-arg,但我很惊讶我得到了这个异常。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'threadPoolExector' defined in ServletContext resource [/WEB-INF/context/web-applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.concurrent.ThreadPoolExecutor]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.util.concurrent.ThreadPoolExecutor.&lt;init>()

我以前使用过 Spring beans,但这看起来是一个奇怪的问题。

最佳答案

问题在最后:

... No default constructor found; ...

ThreadPoolExecutor 没有默认构造函数,您必须模拟您在代码中描述的内容:使用 <constructor-arg> 设置至少最小构造函数的构造函数参数标签而不是 <property>标签:

ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue)

在上下文 XML 文件中:

<bean id="threadPoolExector" class="java.util.concurrent.ThreadPoolExecutor" lazy-init="true" scope="singleton">
<constructor-arg index="0" type="int" value="${corePoolSize}"/>
<constructor-arg index="1" type="int" value="${maximumPoolSize}"/>
<constructor-arg index="2" type="long" value="${keepAliveTime}"/>
<constructor-arg index="3" type="java.util.concurrent.TimeUnit" value="java.util.concurrent.TimeUnit.SECONDS"/>
<constructor-arg index="4" ref="abcBlockingQueueImpl"/>
</bean>

关于java - 无法使用 Spring 创建 java.util.concurrent.ThreadPoolExecutor 的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38925594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com