Используйте SAP Cloud SDK для интеграции с пользовательской серверной службой (oData) на основе VDM Generator - PullRequest
1 голос
/ 03 июля 2019

Я следовал за блогом Александра Дьюмонта , пытаясь реализовать приложение Java Spring Boot, которое использует Cloud Foundry Destination.За пунктом назначения находится пользовательская OData V2, исходящая из локальной ERP-системы.Для локального разработчика, когда я выполняю сборку Maven, модуль Integration-Tests регистрирует сбой из-за внедрения зависимости

Это часть моего контроллера

@RestController
@RequestMapping("/resources")
public class ClassificationsController {

    private static final Logger logger =    CloudLoggerFactory.getLogger(ClassificationsController.class);


    private final  ClassificationService service;


    public ClassificationsController(@Nonnull final ClassificationService service) {

        this.service = service;
    }
….. 

}

. Служба @Nonnull final ClassificationService вызываетorg.springframework.beans.factory.UnsatisfiedDependencyException Я не могу использовать аннотации стереотипов Spring для сгенерированных классов обслуживания (свободно) для создания Beans!

1 Ответ

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

Этот вопрос скорее относится к конфигурации Spring Boot.

Я предполагаю, что ClassificationService - это интерфейс, и реализующий класс существует в том же пакете.

Пожалуйста, убедитесь ...

  • ... чтобы добавить реализующий класс ClassificationService к вашему компоненту сканирования / выполнения теста. Не стесняйтесь поделиться кодом тестирования интеграции для настройки среды тестирования. Возможно, отсутствует дополнительная ссылка на класс.

  • ... для правильной аннотации соответствующего класса приложения вашего проекта Spring Boot. Например, предположим, что ваш ClassificationService находится в org.example.services.classification, а остальная часть вашего приложения использует org.example.app. Ваш базовый класс Application будет выглядеть так, если следовать руководству Cloud SDK :

    @SpringBootApplication
    @ComponentScan({"com.sap.cloud.sdk", "org.example.services.classification", "org.example.app"})
    @ServletComponentScan({"com.sap.cloud.sdk", "org.example.app"})
    public class Application extends SpringBootServletInitializer
    {
        @Override
        protected SpringApplicationBuilder configure( final SpringApplicationBuilder application )
        {
            return application.sources(Application.class);
        }
    
        public static void main( final String[] args )
        {
            SpringApplication.run(Application.class, args);
        }
    }
    
  • ... для аннотирования класса реализации ClassificationService с помощью javax.inject.Named. Если у вас есть несколько реализаций одного и того же интерфейса, убедитесь, что для неиспользуемого класса задано пользовательское (уникальное) значение для аннотации @Named.

  • ... для поиска исключений ( Класс не найден ) в журнале приложений при запуске.

...