石英执行方法不访问其他类或 bean



抱歉,如果写错了,我用石英调度程序创建了 spring 启动应用程序,我的问题是石英执行方法无法访问外部类或豆子,它总是返回 null 并且作业停止。

@Component
public class Sample1 implements ApplicationContextAware,ServletContextListener{
private static ApplicationContext CONTEXT;
private static StdSchedulerFactory factory = null;
private static Scheduler sch;
public void setApplicationContext(ApplicationContext context) throws BeansException {
CONTEXT = context;
}
@Override
public void contextInitialized(ServletContextEvent sce) {
factory = new StdSchedulerFactory();
try {
sch=factory.getScheduler();
sch.start();
} catch (SchedulerException e) {
// TODO Auto-generated catch block 
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
contextDestroyed();
}
}

这是一个启动石英调度程序的简单代码,它开始了,作业也被触发并开始执行,而不是在执行方法中

@PersistJobDataAfterExecution
public class TempExecutionJob implements Job,InterruptableJob{
@Override
public void execute(JobExecutionContext context) throws 
JobExecutionException {
String ss=OtherClass.val1;
System.out.println(ss);
}
}

这里 OtherClass 是一个简单的 java 类,它有一个静态变量 val1,其值在服务器启动时设置,但在执行作业时它总是打印 null,并且在调试模式下悬停值可见,但在执行中它需要 null,我不明白为什么会发生这种情况,如果有人可以提供帮助,请

我强烈建议遵循鲍里斯在聊天中提供的建议。将属性移动到 application.yaml 后,您应该能够在使用SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);在作业中初始化 spring 上下文后访问它

最新更新