我正在尝试使用Spring Framework IoC Container来创建类的实例 ThreadPoolExecutor.CallerRunsPolicy。在Java中,我会这样做......
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;
...
RejectedExecutionHandler rejectedExecutionHandler = new ThreadPoolExecutor.CallerRunsPolicy();
但是当我尝试在Spring中执行等效操作时,它会抛出 CannotLoadBeanClassException 。
<beans>
<bean class="java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy"/>
</beans>
更一般地说:在Spring ApplicationContext XML中,如何调用静态内部类的构造函数?
答案 0 :(得分:13)
我认为它不起作用的原因是因为Spring无法将其理解为静态内部类。 可能这可行:
<beans>
<bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/>
</beans>
答案 1 :(得分:1)
使用the factory-method
attribute:
以下bean定义指定通过调用factory-method创建bean。该定义未指定返回对象的类型(类),仅指定包含工厂方法的类。在此示例中,createInstance()方法必须是静态方法。
<bean id="clientService" class="examples.ClientService" factory-method="createInstance"/>