SpringBoot集成Apache Camel JDBC操作PostgreSQL报DataSource url未配置错误如何解决
报错根本原因:
Spring Boot的DataSource自动配置逻辑仅识别spring.datasource.*开头的配置项,你自定义的PostgresDB*前缀配置不会被自动配置读取;同时你手动编写的DatabaseConfiguration类仅将数据源注册到了Camel独立的SimpleRegistry中,并未注册到Spring的Bean容器,无法被Spring Boot和Camel的Spring集成逻辑识别,因此抛出找不到url和驱动类的错误。
解决步骤
- 第一步:替换application.properties中的配置项,使用Spring Boot默认的数据源配置前缀:
spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
- 第二步:删除你自行编写的DatabaseConfiguration类,无需手动创建数据源,spring-boot-starter-jdbc会自动根据上面的配置生成名为
dataSource的数据源Bean,注册到Spring容器中,Camel的Spring集成会自动同步Spring容器的Bean,可直接在路由中使用。 - 第三步:路由中的jdbc端点保持原配置
to("jdbc:dataSource")即可,无需修改为myDataSource。 - 第四步:移除你手动添加到模块路径的JDBC驱动jar包,所有依赖统一由Maven管理,避免版本冲突和类加载异常。
- 第五步:修正路由中的INSERT SQL语法,字符串值需要用单引号包裹,否则执行会报SQL语法错误:
.transform().simple("INSERT INTO person (name, country) VALUES ('DANY', 'LB')")
内容的提问来源于stack exchange,提问作者Jenny
相关产品推荐
相关产品推荐

