Spring 如何在org.quartz.Job类中使用application.properties

Spring 如何在org.quartz.Job类中使用application.properties,spring,spring-boot,quartz-scheduler,job-scheduling,Spring,Spring Boot,Quartz Scheduler,Job Scheduling,我创建了一个spring启动应用程序来实现Quartz调度器。在作业类中,我想使用application.properties中的一些属性。如何注射 我已尝试了以下操作,但结果为空: @Component public class ScheduleJob implements org.quartz.Job { private static final Logger LOGGER = LogManager.getLogger(ScheduleJob.class);

我创建了一个spring启动应用程序来实现Quartz调度器。在作业类中,我想使用application.properties中的一些属性。如何注射

我已尝试了以下操作,但结果为空:

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

        private static final Logger LOGGER = LogManager.getLogger(ScheduleJob.class);

        public ScheduleJob() {
        }

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

        public void execute(JobExecutionContext context) throws JobExecutionException {

            LOGGER.info("Job exceution starts--->");
              System.out.println("-------------------"+ijobsUrl);

Spring需要用@Component注释类,以便对其进行管理(包括将任何属性加载到类中)。如果您使用“new”来创建对象,那么它就不在Spring的控制范围内,并且不会将依赖项/值注入其中


另一方面,如果使用Spring Boot,则对Quartz有本机支持:

首先,
ScheduleJob
类应该用
@Component
注释,以便Spring管理它。其次,如果您想要注入任何属性,可以采用与注入
ijobsUrl
的值类似的方式

将所需属性放入application.properties中

@Value("${my.property}")
private String myProperty

Spring Boot内置了对Quartz的支持。它使用我们在application.properties文件中提供的配置自动创建Quartz调度程序bean。这就是为什么我们可以直接在控制器中注入调度程序。您具体在寻找哪个属性?我已经注入了Quartz调度程序。但是在作业类中,我想调用一个我想从属性文件中选取的url。尝试了相同的方法,但仍然得到null。从何处获取属性ijobs.service.url?从application.Properties使用组件,但仍然得到null值。如何创建ScheduleJob?您需要具备以下条件才能使用它:@Component public class QuartzSetup{@Autowired ScheduleJob;//使用job的代码}Spring没有因为缺少属性而无法创建组件这一事实表明Spring没有创建对象。是,默认情况下,您的作业子类实例不是由Spring创建的。您可以:a)将作业工厂设置为SpringBean,它将在创建过程中自动关联依赖项b)或将其作为作业的execute()方法的第一行调用:SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);