项目作者: YukiYoshikawa

项目描述 :
Quartz + Guice(Dependency Injection)
高级语言: Java
项目地址: git://github.com/YukiYoshikawa/quartz-drink-guice.git
创建时间: 2016-12-10T06:41:43Z
项目社区:https://github.com/YukiYoshikawa/quartz-drink-guice

开源协议:Apache License 2.0

下载


quartz-drink-guice

Quartz + Guice(Dependency Injection)

Getting started

Add dependency in your pom.xml or other build tool’s configuration file.

  1. <dependency>
  2. <groupId>net.y-yuki</groupId>
  3. <artifactId>quartz-drink-guice</artifactId>
  4. <version>0.1.1</version>
  5. </dependency>


Define a job class

  1. import org.quartz.DisallowConcurrentExecution;
  2. import org.quartz.JobExecutionContext;
  3. import org.quartz.JobExecutionException;
  4. import javax.inject.Inject;
  5. import javax.inject.Singleton;
  6. @DisallowConcurrentExecution
  7. @Singleton
  8. public class MyJob implements org.quartz.Job {
  9. private final MyLogic logic;
  10. @Inject
  11. public MyJob(MyLogic logic) {
  12. this.logic = logic;
  13. }
  14. @Override
  15. public void execute(JobExecutionContext context) throws JobExecutionException {
  16. logic.invoke();
  17. }
  18. }
  1. import com.google.inject.ImplementedBy;
  2. @ImplementedBy(TrialQuartzImpl.class)
  3. public interface TrialQuartz {
  4. void run();
  5. }
  1. import net.yyuki.quartz.ex.guice.QuartzEx;
  2. import org.quartz.JobBuilder;
  3. import org.quartz.JobDetail;
  4. import org.quartz.Scheduler;
  5. import org.quartz.SchedulerException;
  6. import org.quartz.Trigger;
  7. import org.quartz.TriggerBuilder;
  8. import javax.inject.Inject;
  9. import javax.inject.Singleton;
  10. import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
  11. @Singleton
  12. public class TrialQuartzImpl implements TrialQuartz {
  13. private final QuartzEx quartz;
  14. @Inject
  15. public TrialQuartzImpl(QuartzEx quartz) {
  16. this.quartz = quartz;
  17. }
  18. @Override
  19. public void run() {
  20. JobDetail job1 = JobBuilder.newJob(MyJob.class)
  21. .withIdentity("job1", "group1")
  22. .build();
  23. Trigger trigger1 = TriggerBuilder.newTrigger()
  24. .withIdentity("trigger1", "group1")
  25. .startNow()
  26. .withSchedule(simpleSchedule()
  27. .withIntervalInMilliseconds(100)
  28. .repeatForever())
  29. .build();
  30. Scheduler scheduler = quartz.getScheduler();
  31. try {
  32. scheduler.start();
  33. scheduler.scheduleJob(job1, trigger1);
  34. } catch (SchedulerException e) {
  35. throw new RuntimeException(e);
  36. }
  37. try {
  38. Thread.sleep(2000);
  39. } catch (InterruptedException e) {
  40. e.printStackTrace();
  41. }
  42. try {
  43. scheduler.shutdown();
  44. } catch (SchedulerException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. }

DI Container start

  1. import com.google.inject.Guice;
  2. import com.google.inject.Injector;
  3. import net.yyuki.quartz.ex.guice.QuartzModule;
  4. public class QuartzTrialMain {
  5. public static void main(String[] args) throws Exception {
  6. Injector injector = Guice.createInjector(new QuartzModule());
  7. TrialQuartz trialQuartz = injector.getInstance(TrialQuartz.class);
  8. trialQuartz.run();
  9. }
  10. }