我跟随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!
答案 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
批注的自定义(唯一)值。
...,以便在启动期间在应用程序日志中查找异常(未找到类)。