问题:spring boot + apache camel + mongodb 集成问题

我是 apache camel 的新手,刚刚开始。我有一个 spring boot (MVC) + mongodb 项目已经运行良好,当我尝试将它与 apache camel 集成时,我在控制台上遇到异常。根据我对异常 Spring Boot 的理解,当我在项目的其他任何地方使用@ComponentScan(basePackages="packagePath")时,我不能在骆驼路由文件上使用默认注释@Component,因为它是 MVC 架构,我有控制器、服务和存储库,我不能忽视,请帮我解决这个问题。

控制台例外

启动 ApplicationContext 时出错。要显示条件报告,请在启用“调试”的情况下重新运行您的应用程序。 2018-03-15 17:17:55.426 错误 744 --- [main] os.boot.SpringApplication

: 应用程序运行失败

POM

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
            <version>2.20.2</version>
        </dependency>
</dependencies>

应用程序配置

package com.era.conf;

@SpringBootApplication
@ComponentScan(basePackages = "com.era.controller")
public class ApplicationConfiguration {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(ApplicationConfiguration.class, args);
    }

}

电子邮件响应控制器

package com.era.controller;

@RestController
@RequestMapping("/emailResponse")
@ComponentScan(basePackages = "com.era.service")
public class EmailResponseController {

    @Autowired private EmailResponseService serv;

    @RequestMapping("/read")
    public EmailResponseModel ExchangeServerEmailsReader() {
        return serv.ExchangeServerEmailsReader();
    }
}

服务

package com.era.service;

@Service
@EnableMongoRepositories("com.era.repository")
public class EmailResponseServiceImpl implements EmailResponseService {

    @Autowired private EmailResponseRepository repo;

    @Override
    public EmailResponseModel ExchangeServerEmailsReader() {
        final EmailResponseModel emailModel = new EmailResponseModel();
        emailModel.setEmail(readEmailsFromExchangeServer());

        return repo.save(emailModel);
    }
}

骆驼路线类

package com.era.route;

@Component
public class CamelRouteClass extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("file:C://response?noop=true").to("file:C://response2");
    }
}

解答

问题是 RelaxedPropertyResolver 已在最新版本的 spring-boot (2.0.0.RELEASE) 中被删除。但是,最新的 camel-spring-boot-starter 模块(编写本文时为 2.20.2)仍然依赖于缺少的 RelaxedPropertyResolver。

要在出现新版本的 Camel 之前解决此问题,您需要将 spring-boot 降级到 1.5.10.RELEASE。

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐