首页 > 解决方案 > 如何访问 org.quartz.Job 类中的应用程序属性?

问题描述

我创建了一个 spring boot 应用程序来实现 Quartz 调度程序。在 Job 类中,我想使用 application.properties 中的一些属性。怎么注射?

当我尝试使用值注释使用它时,得到空值。

这是我的代码

主类:

@SpringBootApplication
public class SchedulerApplication {

    public static void main(String[] args) {

        SpringApplication.run(SchedulerApplication.class, args);

    }

    @Bean
    public Scheduler scheduler() {

        Scheduler scheduler = null;
        try {

            SchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
            scheduler = stdSchedulerFactory.getScheduler();
            scheduler.start();


        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return scheduler;

    }

}

工作类别:

@Component
public class ScheduleJob implements org.quartz.Job {

    @Value("${ijobs.service.url}")
    public String ijobsUrl;

    public ScheduleJob() {

    }

    public void execute(JobExecutionContext context) throws JobExecutionException {
        String jobName = null;
        System.out.println("ijobsUrl--->"+ijobsUrl);
        } 
}

标签: springspring-bootpropertiesquartz-schedulerquartz

解决方案


尝试在 Job 类上使用这个 @Order

  @Component
    @Order(Ordered.HIGHEST_PRECEDENCE + 99)
    public class ScheduleJob implements org.quartz.Job {

        @Value("${ijobs.service.url}")
        public String ijobsUrl;

        public ScheduleJob() {

        }

        public void execute(JobExecutionContext context) throws JobExecutionException {
            String jobName = null;
            System.out.println("ijobsUrl--->"+ijobsUrl);
            } 

  }

推荐阅读