Почему я получаю неудовлетворенную зависимость от @Autowired org.quartz.Scheduler? - PullRequest
0 голосов
/ 07 января 2019

В моей реализации сервиса,

import org.quartz.Scheduler;

@Service
public class FTPTransferServiceImpl implements FTPTransferServiceInterface {
    @Autowired
    private Scheduler scheduler;  //here i get RunTime Error

    @Override
    public String addFTP(FTPDomain ftpDomain) {
        //scheduller Processing----
        return ftpTransferDaoInterface.addFTP(ftpDomain);
    }

и получение журнала ошибок в консоли,

org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания компонента с именем 'adminFTPTransfer': неудовлетворенная зависимость, выраженная через поле 'ftpTransferServiceInterface'; Вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем 'FTPTransferServiceImpl': Unsatisfied dependency expressed through field 'scheduler'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: нет квалифицированного bean-компонента типа. по крайней мере 1 бин, который считается кандидатом autowire. Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true)}

Как мне это решить? Кто-нибудь может решить это? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Поскольку исключение сообщает «Нет подходящего компонента типа [org.quartz.Scheduler]», нам нужно будет определить компонент типа org.quartz.Scheduler, но это невозможно без какой-либо конкретной реализации того же самого, Итак, нам нужно получить конкретную реализацию из класса Factory org.quartz.impl.StdSchedulerFactory, и это нестатический метод getScheduler ().

Следовательно, вам придется добавить следующие две строки в ваш контекстный XML-файл, и он будет работать, я подтвердил то же самое с той же версией Spring, которую вы используете:

<bean id="schedulerFactory"   class="org.quartz.impl.StdSchedulerFactory" />    

<bean id="scheduler" class="org.quartz.Scheduler"  factory-bean="schedulerFactory" factory-method="getScheduler" />
0 голосов
/ 07 января 2019

Проверка возможных решений:

  1. Убедитесь, что вы определили Spring Bean, который реализует Планировщик, пример реализации ниже:

    </p>
    
    <pre><code>import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.impl.StdSchedulerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class SampleSchedulerConfiguration {
    
        @Bean
        public Scheduler getScheduler() throws SchedulerException {
            return StdSchedulerFactory.getDefaultScheduler();
        }
    
    }
    </code>

    </p></li> <li><p>If there is existing Bean then check is its package is visible for Spring Context, check @ComponentScan configuration</p></li> <li>If you want to use some Spring implementation of Scheduler then make sure that it is properly configured in Spring Context</li> </ol> <p>To use quartz.properties you need to save it under ../main/resources/quartz.properties. Method call StdSchedulerFactory.getDefaultScheduler() will automatically load properties from this file, below is sample file content:</p> org.quartz.scheduler.instanceName=JavacodeGeeksScheduler org.quartz.scheduler.instanceId=99199 org.quartz.scheduler.rmi.export=false org.quartz.scheduler.rmi.proxy=false org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount=3 org.quartz.context.key.QuartzTopic=QuartzPorperties

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...