前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用SpringBoot1.4.0的一个坑

使用SpringBoot1.4.0的一个坑

作者头像
我是攻城师
发布2018-05-14 16:48:55
2.1K0
发布2018-05-14 16:48:55
举报
文章被收录于专栏:我是攻城师我是攻城师

时隔半年,再次使用Spring Boot快速搭建微服务,半年前使用的版本是1.2.5,如今看官网最新的release版本是1.4.0,那就用最新的来构建,由于部署环境可能有多套所以使用maven-filter插件,定义多套环境的配置文件,最后使用的时候: 可以采用下面的几个命令来构建不同环境的打包:

Java代码

  1. maven clean package -Pdev
  2. maven clean package -Ptest
  3. maven clean package -Pproduct

项目结构截图如下:

pom依赖如下:

然后在跑单元测试的时候,出乎意料的报了下面的一个错误:

Java代码

  1. Caused by: java.lang.IllegalArgumentException: Circular placeholder reference 'jdbc.url' in property definitions
  2. at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:141)

以前使用1.2.x的版本,没有遇到过这个错误,它的大致意思就是找不到jdbc.url这个属性,向配置文件里面赋值,我一直以为是自己某些文件,配置错误了,但检查了好几遍发现,并没有错误的地方,然后我把版本降到1.2.x的版本,确实可以编译通过,这说明了升级版本有一些api变化导致,于是网上几经google搜索,最后在stackoverflow找到了答案: 以前的赋值方式已经不支持了:

Java代码

  1. jdbc.url=${jdbc.url}
  2. jdbc.user=${jdbc.user}
  3. jdbc.password=${jdbc.password}
  4. jdbc.driveClassName=${jdbc.driveClassName}

最新的支持方式如下:

Java代码

  1. jdbc.url=@jdbc.url@
  2. jdbc.user=@jdbc.user@
  3. jdbc.password=@jdbc.password@
  4. jdbc.driveClassName=@jdbc.driveClassName@

总结:如果遇到这种类似的问题,仅仅是因为升级版本造成的,最快的解决办法就是上官网看changes 看看最新的版本的使用方式。 参考链接: http://stackoverflow.com/questions/36501017/maven-resource-filtering-not-working-because-of-spring-boot-dependency https://github.com/spring-projects/spring-boot/issues/980 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我是攻城师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档