spring boot + apache camel + mongodb 集成问题
问题:spring boot + apache camel + mongodb 集成问题 我是 apache camel 的新手,刚刚开始。我有一个 spring boot (MVC) + mongodb 项目已经运行良好,当我尝试将它与 apache camel 集成时,我在控制台上遇到异常。根据我对异常 Spring Boot 的理解,当我在项目的其他任何地方使用@ComponentScan(
问题: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。
更多推荐
所有评论(0)