使用SAP Cloud SDK与基于VDM Generator的自定义后端服务(oData)集成

时间:2019-07-03 19:47:02

标签: sap-cloud-sdk

我跟随Alexander Duemont的blog,尝试实现使用Cloud Foundry Destination的Java Spring Boot应用程序。目标后面有一个自定义的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最终的分类服务服务导致org.springframework.beans.factory.UnsatisfiedDependencyException 我不能在生成的Service类(Fluent)上使用Spring构造型注释来创建Bean!

1 个答案:

答案 0 :(得分:0)

这个问题很可能与Spring Boot配置有关。

我假设ClassificationService是一个接口,并且实现类存在于同一包中。

请确保...

  • ...将ClassificationService的实现类添加到组件扫描/测试运行时。随时共享集成测试代码以设置测试环境。也许缺少附加的类引用。

  • ...以正确注释您的Spring Boot项目的各个 Application 类。例如,假设您的ClassificationService驻留在org.example.services.classification中,而其他应用程序则使用org.example.app。遵循 Cloud SDK 指南时,基本的 Application 类如下所示:

    @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批注的自定义(唯一)值。

  • ...,以便在启动期间在应用程序日志中查找异常(未找到类)。