taosuzhan 2017-10-13 02:05 采纳率: 0%
浏览 558

创建jobDetail实例,后面的@autowired为null?

@Component
public class Task{

Scheduler scheduler=null;
public void aaa () {

System.out.println(111);
SchedulerFactory schedulerfactory=new StdSchedulerFactory();

try{

scheduler=schedulerfactory.getScheduler();

JobDetail job=JobBuilder.newJob(CusTask.class).withIdentity("job1", "jgroup1").build();

          Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup")  
          .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))  .startNow().build();   
       scheduler.scheduleJob(job, trigger);  
       scheduler.start();           
   }catch(Exception e){  
       e.printStackTrace();  
   }  

}
}
下面是我job类
@Component
public class CusTask implements Job {

@Autowired
private synchronous_customer sy;
//把要执行的操作,写在execute方法中

public void execute(JobExecutionContext arg0) throws JobExecutionException {

try {
this.sy.customer("2017-08-08 00:00:00", 1);
} catch (Exception e) {
e.printStackTrace();
}
}
}

只要运行sy.customer就是null,求一个解决之法 最好带一点代码 谢谢了

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 00:38
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你的代码看起来是正确的,但是在execute方法的参数列表中没有使用@Autowired注解来注入synchronous_customer对象。你需要确保在你的任务实现类中正确地注入同步客户对象。

    如果你正在使用Spring框架,你应该按照以下方式修改你的CusTask类:

    public class CusTask implements Job {
        @Autowired
        private synchronous_customer sy;
        
        //其他代码...
    }
    

    然后,在你的主类(例如:Application或者Main)中,你可以这样调用任务:

    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
            
            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
            Task task = new Task();
            executor.scheduleWithFixedDelay(task::execute, 0, 10, TimeUnit.SECONDS);
        }
    }
    

    这将使你的任务每10秒执行一次。请注意,你需要根据实际情况调整这个值。

    评论

报告相同问题?