quartzjobbean 注入bean
时间: 2023-08-27 18:03:46 浏览: 50
在 Quartz 中,我们可以使用 Spring 的依赖注入(DI)来将一个 Bean 注入到 Job 中。具体步骤如下:
1. 实现 Job 接口,例如:
```java
public class MyJob implements Job {
private MyBean myBean;
public void execute(JobExecutionContext context) throws JobExecutionException {
myBean.doSomething();
}
public void setMyBean(MyBean myBean) {
this.myBean = myBean;
}
}
```
2. 在 Spring 配置文件中,将 Bean 定义为 Quartz Job,并注入到 Job 中,例如:
```xml
<bean id="myJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.example.MyJob" />
</bean>
<bean id="myBean" class="com.example.MyBean" />
<bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="myJob" />
<property name="cronExpression" value="0 0/5 * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="myJobTrigger" />
</list>
</property>
<property name="jobDetails">
<list>
<ref bean="myJob" />
</list>
</property>
<property name="autoStartup" value="true" />
</bean>
```
在上面的例子中,我们定义了一个名为 `myBean` 的 Bean,并将其注入到了 `MyJob` 中。注意,在 `MyJob` 中,我们使用 `setMyBean()` 方法来注入 `myBean`。
最后,在 `SchedulerFactoryBean` 中,我们将 `myJobTrigger` 和 `myJob` 注入到 Scheduler 中,并启动 Scheduler。这样,当 `myJobTrigger` 触发时,Quartz 就会调用 `MyJob` 的 `execute()` 方法,并使用注入的 `myBean` 执行相应的逻辑。