[英]Autowired class from the jar file outside the classes
jar文件中的Class如何通过<context:component-scan base-package="" />
。 我的自动接线课程出现以下错误。
SEVERE [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.quartz.Scheduler com.path.controller.MyController.scheduler; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.quartz.Scheduler] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
码:
package com.path.controller;
import org.quartz.Scheduler;
@Controller
public class MyController{
@Autowired
Scheduler scheduler;
}
该调度程序位于jar文件quartz-oracle-2.1.6.jar
,位于WEB-INF\\lib
。 该lib
位于部署软件包的classes
文件夹之外。 在applicationcontext.xml
我有以下条目,
<context:component-scan base-package="com.path" />
使用eclipse中的导出实用程序导出jar文件时,有一个选项称为添加目录项。 选中此选项并导出jar文件,这将解决问题
我猜您尚未定义调度程序bean。 您需要先定义bean才能注入到控制器中。
在applicationcontext.xml
首先定义一个Scheduler
类型的bean。 您可能需要类似下面的内容。 确保检查石英文档,以检查所需的调度程序以及如何实例化它。
<bean id="schedulerFactory"
class="org.quartz.StdSchedulerFactory" />
<bean id="scheduler" class="org.quartz.Scheduler" factory-bean="schedulerFactory" factory-method="getDefaultScheduler" />
由于该异常抱怨“没有[org.quartz.Scheduler]类型的合格bean”,我们将不得不定义org.quartz.Scheduler类型的bean,但是,如果没有任何相同的具体实现,这是不可能的。将必须从Factory类org.quartz.impl.StdSchedulerFactory中获得一个具体的实现,它是一个非静态方法getScheduler()。
因此,您将必须在上下文xml文件中添加以下两行,并且它将起作用,我已经使用与您使用的相同版本的spring进行了验证:
<bean id="schedulerFactory" class="org.quartz.impl.StdSchedulerFactory" />
<bean id="scheduler" class="org.quartz.Scheduler" factory-bean="schedulerFactory" factory-method="getScheduler" />
在打印初始化的bean之后,控制台输出显示以下内容:
scheduler=org.quartz.impl.StdScheduler@536aaa8d
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.