0

The code to use two jobs....Its creating same bean. I am not sure how the injection works here.Its giving the error...........................................................................................................................................................................................................

@Configuration
public class QuartzBeans {

    // frequencyInSec can be read through property file of can be set setter
    // method.

    int frequencyInSec = 10;

    public void setFrequencyInSec(int frequencyInSec) {
        this.frequencyInSec = frequencyInSec;
    }

    @Autowired
    private ApplicationContext applicationContext;

    /*
     * @PostConstruct public void init() {
     * logger.info("Hello world from Spring..."); }
     */

    Logger logger = LoggerFactory.getLogger(getClass());

    @Bean
    public SpringBeanJobFactory springBeanJobFactory() {
        AutoWiringSpringBeanJobFactory jobFactory = new AutoWiringSpringBeanJobFactory();
        logger.debug("Configuring Job factory");

        jobFactory.setApplicationContext(applicationContext);
        return jobFactory;
    }

    @Bean
    public SchedulerFactoryBean scheduler(Trigger[] trigger, JobDetail[] job) {

        SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
        schedulerFactory.setConfigLocation(new ClassPathResource("quartz.properties"));

        logger.debug("Setting the Scheduler up");
        schedulerFactory.setJobFactory(springBeanJobFactory());
        schedulerFactory.setJobDetails(job);
        schedulerFactory.setTriggers(trigger);

        return schedulerFactory;
    }

    @Bean(name = "jobb")
    @Scope("prototype")
    public JobDetailFactoryBean jobDetail() {

        JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
        jobDetailFactory.setJobClass(SampleJob.class);
        jobDetailFactory.setName("Qrtz_Job_Detail");
        jobDetailFactory.setDescription("Invoke Sample Job service...");
        jobDetailFactory.setDurability(true);
        return jobDetailFactory;
    }
    /*
     * @Autowired JobDetailFactoryBean jobDetail1;
     * 
     * @Autowired JobDetailFactoryBean jobDetail;
     * 
     * @Autowired SimpleTriggerFactoryBean trigger2;
     * 
     * @Autowired SimpleTriggerFactoryBean trigger;
     */

    @Bean(name = "jobb5")
    @Scope("prototype")
    public JobDetailFactoryBean jobDetail1() {

        JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
        jobDetailFactory.setBeanName("bean33");
        jobDetailFactory.setJobClass(SampleJob2.class);
        jobDetailFactory.setName("Qrtz_Job_Detail2d");
        jobDetailFactory.setDescription("Invoke Sample Job service2...");
        jobDetailFactory.setDurability(true);
        return jobDetailFactory;
    }

    /*
     * @Bean public SimpleTriggerFactoryBean trigger2(JobDetail job) {
     * 
     * SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
     * trigger.setJobDetail(job);
     * 
     * int frequencyInSec = 4;
     * logger.info("Configuring trigger to fire every {} seconds",
     * frequencyInSec);
     * 
     * trigger.setRepeatInterval(frequencyInSec * 1000);
     * trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
     * trigger.setName("Qrtz_Trigger"); return trigger; }
     */

    @Bean(name = "helldo")
    public SimpleTriggerFactoryBean trigger(JobDetail job) {

        SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
        trigger.setJobDetail(job);

        logger.info("Configuring trigger to fire every {} seconds", frequencyInSec);
        trigger.setRepeatInterval(frequencyInSec * 1000);
        trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        trigger.setName("Qrtz_Trigger2");
        return trigger;
    }

    @Bean(name = "helld2")
    public SimpleTriggerFactoryBean trigger2(JobDetail job) {

        SimpleTriggerFactoryBean trigger2 = new SimpleTriggerFactoryBean();
        trigger2.setBeanName("bean1");
        trigger2.setJobDetail(job);

        logger.info("Configuring trigger to fire every {} seconds", frequencyInSec);
        trigger2.setRepeatInterval(frequencyInSec * 1000);
        trigger2.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        trigger2.setName("Qrtz_Trigger23");
        return trigger2;
    }
}

Unsatisfied dependency expressed through method 'trigger' parameter 0: No qualifying bean of type [org.quartz.JobDetail] is defined: expected single matching bean but found 2: jobb5,jobb; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.quartz.JobDetail] is defined: expected single matching bean but found 2: jobb5,jobb

  • This is my first time posting a question. Pardon for poor formatting. – Aakash Kedia May 18 '17 at 15:31
  • You've registered two `JobDetailFactoryBean` beans which themselves generate two `JobDetail` beans. Your `trigger` method expects a `JobDetail` bean (as an argument), but you haven't specified which. Spring won't decide for you and therefore fails. – Sotirios Delimanolis May 18 '17 at 15:43

0 Answers0