Ошибка компонента не найдена: неудовлетворительная зависимость выражена через поле - PullRequest
0 голосов
/ 04 июля 2019

У меня есть следующее Основное приложение: -

Оба пакета находятся в разных модулях, и у меня есть "com.app.api включен в pom.xml com.app.batch

    //commented  @SpringBootApplication(scanBasePackages={"com.app.batch", "com.app.api"})
        public class App 
        {
            public static void main( String[] args )
            {

                 SpringApplication.run(App.class, args);
            }
        }

В com.app.api у меня есть класс ApiClass

@Service
public class ApiClass {}

в `com.app.batch, у меня есть

@Component
public class JobRunner implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        // TODO Auto-generated method stub
        apiClass.getData(1111);
    }
}

Когда я комментирую @SpringBootApplication(scanBasePackages={"com.app.batch", "com.app.api"}), я получаюследующая ошибка

Поле apiClass в com.app.batch.config.JobRunner требуется компонент типа com.com.api.ApiClass, который не может быть найден.

Как я могу решить проблему, не используя scanBasePackages. Я не хочу использовать scanBasePackages, так как модуль может быть добавлен в будущем, и он может получить cumberson

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Если вы не заинтересованы в использовании

@SpringBootApplication(scanBasePackages={"com.app.batch", "com.app.api"})

, вам нужно изменить иерархию пакетов, чтобы Spring легко сканировал бобы.

Ваш основной класс SpringBootApplication должен быть в пакете com.app, а остальные классы должны быть в подпакетах.Например, com.app.batch and com.app.api являются подпакетами из com.app

. При использовании такой иерархии пакетов вам не нужен scanBasePackages.

0 голосов
/ 04 июля 2019

Что такое пакет класса App?

Он должен быть в базовом пакете, чтобы Spring Boot Application сканировал все пакеты внутри него.

@SpringBootApplication аннотация самостоятельно включает следующие аннотации / функции:

  1. @EnableAutoConfiguration: включить механизм автоконфигурации Spring Boot
  2. @ComponentScan:включить сканирование @Component для пакета, в котором находится приложение
  3. @Configuration: разрешить регистрировать дополнительные компоненты в контексте или импортировать дополнительные классы конфигурации

Для получения дополнительной информации вы можетечитать здесь

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