1

我关注了 Alexander Duemont 的博客,尝试实现一个使用 Cloud Foundry Destination 的 Java Spring Boot 应用程序。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 我不能在生成的服务类(Fluent)上使用 Spring 原型注释来创建 Bean!

4

1 回答 1

0

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

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

请确保...

  • ...将实现类添加ClassificationService到您的组件扫描/测试运行时。随意分享集成测试代码来设置测试环境。可能缺少附加的类引用。

  • ...正确注释 Spring Boot 项目的相应应用程序类。例如,假设您ClassificationService居住在org.example.services.classification,而您的应用程序的其余部分使用org.example.app. 遵循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...用 with注释实现类javax.inject.Named。如果您有相同接口的多个实现,请确保为未使用的类提供自定义(唯一)@Named注释值。

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

于 2019-07-04T07:16:07.250 回答