使用 SAP Cloud SDK 与基于 VDM Generator 的自定义后端服务 (oData) 集成
Use SAP Cloud SDK to integrate with a custom backend service (oData) based on VDM Generator
我遵循了 Alexander Duemont 的 blog,试图实现使用 Cloud Foundry Destination 的 Java Spring 引导应用程序。目标后面有一个自定义的 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
我不能在生成的服务 类 (Fluent) 上使用 Spring 构造型注释来创建 Beans!
这个问题更可能与 Spring 引导配置有关。
我假设 ClassificationService
是一个接口并且实现 class 存在于同一个包中。
请确认...
... 将 ClassificationService
的实现 class 添加到您的组件扫描/测试运行时。随意共享集成测试代码以设置测试环境。可能缺少额外的 class 参考。
... 正确注释 Application class 您的 Spring 引导项目。例如,假设您的 ClassificationService
位于 org.example.services.classification
,而您的应用程序的其余部分使用 org.example.app
。当遵循 Cloud SDK 指南时,您的基本 Application class 将如下所示:
@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);
}
}
...用javax.inject.Named
注释ClassificationService
的实现class。如果您有同一接口的多个实现,请确保为 not-used class 注释 @Named
提供自定义(唯一)值。
...在启动期间在应用程序日志中查找异常(Class未找到)。
我遵循了 Alexander Duemont 的 blog,试图实现使用 Cloud Foundry Destination 的 Java Spring 引导应用程序。目标后面有一个自定义的 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 我不能在生成的服务 类 (Fluent) 上使用 Spring 构造型注释来创建 Beans!
这个问题更可能与 Spring 引导配置有关。
我假设 ClassificationService
是一个接口并且实现 class 存在于同一个包中。
请确认...
... 将
ClassificationService
的实现 class 添加到您的组件扫描/测试运行时。随意共享集成测试代码以设置测试环境。可能缺少额外的 class 参考。... 正确注释 Application class 您的 Spring 引导项目。例如,假设您的
ClassificationService
位于org.example.services.classification
,而您的应用程序的其余部分使用org.example.app
。当遵循 Cloud SDK 指南时,您的基本 Application class 将如下所示:@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); } }
...用
javax.inject.Named
注释ClassificationService
的实现class。如果您有同一接口的多个实现,请确保为 not-used class 注释@Named
提供自定义(唯一)值。...在启动期间在应用程序日志中查找异常(Class未找到)。