gpt4 book ai didi

java - 带有 Quartz 的 Spring @Autowire

转载 作者:行者123 更新时间:2023-11-30 10:58:26 24 4
gpt4 key购买 nike

在我的网络应用程序中,我有一个这样的类,其中 dao 被 Autowiring 并且工作正常

@RestController
@RequestMapping(value = "/devicecontrolpanel")
public class DeviceCtrlPanelController {


@Autowired
private DeviceDao dao;

然后在同一个包中我有这个类

@WebListener
public class QuartzListener extends QuartzInitializerListener {

@Autowired
private DeviceDao dao;

为什么dao在这里没有 Autowiring ?工作本身正在开始。我想将该 dao 传递给我的工作

@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("autowired works?");
if(dao==null)
System.out.println("dao is null");
super.contextInitialized(sce);
ServletContext ctx = sce.getServletContext();
StdSchedulerFactory factory = (StdSchedulerFactory) ctx.getAttribute(QUARTZ_FACTORY_KEY);
try {
Scheduler scheduler = factory.getScheduler();
scheduler.getContext().put("aService", dao);
JobDetail jobDetail = JobBuilder.newJob(RegisterLog.class).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simple").withSchedule(
CronScheduleBuilder.cronSchedule("0 0/1 * 1/1 * ? *")).startNow().build();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
} catch (Exception e) {
ctx.log("There was an error scheduling the job.", e);
}
}

最佳答案

@WebListener 是来自 javax.servlet 包的注释,因此它不会 @Autowire 任何组件。

@Component注解QuartzListener来告诉Spring是一个bean。

@WebListener
@Component
public class QuartzListener extends QuartzInitializerListener {

@Autowired
private DeviceDao dao;

}

更新

I already tried adding @Component annotation. Nothing changes. If adding the @Component annotation does not work try:

  1. 尝试其他 Spring 注解 @Service@Controller@Repository

  2. manually autowiring .

  3. QuartzListener 中获取一个 DeviceCtrlPanelController 实例并使用 Autowiring 的 DeviceDao

关于java - 带有 Quartz 的 Spring @Autowire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32245631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com