javaspring-cronExpression,使用@Configuration&@豆子

javaspring-cronExpression,使用@Configuration&@豆子,java,xml,spring,javabeans,cronexpression,Java,Xml,Spring,Javabeans,Cronexpression,我正在开发web.xml应用程序。我在SchedulerConfig.java文件中创建了各种bean,而不是在applicationContext.xml中编写 web.xml: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation=

我正在开发web.xml应用程序。我在
SchedulerConfig.java
文件中创建了各种bean,而不是在
applicationContext.xml
中编写

web.xml:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <display-name>Honorius Batch Application</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>
<!--SchedulerFactoryBean glues together jobDetails and triggers to Configure Quartz Scheduler-->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="applicationContextSchedulerContextKey" value="applicationContext"/>
        <property name="overwriteExistingJobs" value="true"/>
        <property name="jobDetails">
            <list>
                <ref bean="jobDetailFactoryId"/>
            </list>
        </property>
        <property name="triggers">
            <list>
                <ref bean="triggerConfigId"/>
            </list>
        </property>
    </bean>
这些bean是在这里创建的<代码>SchedulerConfig.java:

@Configuration
public class SchedulerConfig extends CronTriggerFactoryBean { 
    public Scheduler scheduler;

    @Bean (name = "triggerConfigId")
    public CronTriggerFactoryBean triggerConfig(){

        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerScheduler();
        try {
            scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.start();

        } catch (SchedulerException e) {
            e.printStackTrace();
        }


        cronTriggerFactoryBean.setCronExpression("0/1 * * * * ?");
        cronTriggerFactoryBean.setGroup("DailyJobsTriggers");
        cronTriggerFactoryBean.setJobDetail(jobConfig().getObject()); 

        try {
            scheduler.scheduleJob(jobConfig().getObject(),triggerConfig().getObject());
        } catch (SchedulerException e) {
            e.printStackTrace();
        }

        return cronTriggerFactoryBean;
    }

    @Bean (name = "jobDetailFactoryId")
    public JobDetailFactoryBean jobConfig(){

        JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();

jobDetailFactoryBean.setJobClass(com.honorius.job.CurrencyAddJob.class);  

        jobDetailFactoryBean.setGroup("dailyJobs");
        jobDetailFactoryBean.setDurability(true);
        jobDetailFactoryBean.setRequestsRecovery(true);

        return jobDetailFactoryBean;
    }
}
通过web.xml运行应用程序并运行Tomcat服务器后,出现以下错误:

 org.springframework.beans.factory.BeanCreationException: Error
 creating bean with name
 'org.springframework.scheduling.quartz.SchedulerFactoryBean#0' defined
 in class path resource [applicationContext.xml]: Cannot resolve
 reference to bean 'jobDetailFactoryId' while setting bean property
 'jobDetails' with key [0]; nested exception is
 org.springframework.beans.factory.NoSuchBeanDefinitionException: No
 bean named 'jobDetailFactoryId' is defined     at

 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
    at   ...   ...  at java.lang.Thread.run(Thread.java:745) Caused by:
 org.springframework.beans.factory.NoSuchBeanDefinitionException: No
 bean named 'jobDetailFactoryId' is defined     at ...

有办法解决吗?如何加载bean并正确运行应用程序?

xml中的bean配置似乎失败了,因为它无法通过@configuration创建bean。可能有多种原因,@配置不工作。注释配置打开了吗?由于@Configuration与xml-config解耦,因此它是独立调用的,在此之前会调用xml-config,并且找不到所需的bean。@RahulKumar处于启用状态,同时@Configuration的依赖项也添加到pom.xml中。但错误依然存在