【发布时间】:2011-06-18 10:35:47
【问题描述】:
我正在尝试创建一个 ThreadPoolExecutor bean,它需要作为属性传递给许多其他 bean。
我已经定义了以下内容,但是在创建 LinkedBlockingQueue 时遇到了一个奇怪的错误(如下所示)。
<bean name="moduleExecutorService" class="java.util.concurrent.ThreadPoolExecutor">
<constructor-arg value="1" /> <!-- Minimun # of threads in pool -->
<constructor-arg value="20" /> <!-- Maximum # of threads in pool (pool is a caching pool that will only keep open those necessary) -->
<constructor-arg value="60" /> <!-- Shutdown unused threads after this TimeUnit -->
<constructor-arg>
<bean class="java.util.concurrent.TimeUnit" factory-method="valueOf">
<constructor-arg value="SECONDS" />
</bean>
</constructor-arg>
<constructor-arg type="java.util.concurrent.LinkedBlockingQueue"><bean class="java.util.concurrent.LinkedBlockingQueue" /></constructor-arg>
</bean>
错误:
446 [main] DEBUG org.springframework.beans.TypeConverterDelegate - Cannot create copy of Collection type [java.util.concurrent.LinkedBlockingQueue] - injecting original Collection as-is
java.lang.InstantiationException: java.util.concurrent.BlockingQueue
【问题讨论】:
-
尝试在构造函数参数上不使用 type="...",或尝试指定 type="java.util.concurrent.BlockingQueue"。
标签: java spring ioc-container javabeans