使用SpringBoot1.4.0的一个坑

使用SpringBoot1.4.0的一个坑_第1张图片  

时隔半年,再次使用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  


项目结构截图如下: 


使用SpringBoot1.4.0的一个坑_第2张图片  


pom依赖如下: 

Java代码   收藏代码
  1. "1.0" encoding="UTF-8"?>  
  2. "http://maven.apache.org/POM/4.0.0"  
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  5.     4.0.0  
  6.   
  7.     com.monitor.bigscreen  
  8.     monitor-bigscreen-sql  
  9.     1.0.0-SNAPSHOT  
  10.   
  11.       
  12.         UTF-8  
  13.         2.3.4  
  14.         4.12  
  15.         1.2.15  
  16.         1.4.0.RELEASE  
  17.         1.0.15  
  18.         5.1.6  
  19.       
  20.   
  21.   
  22.   
  23.   
  24.       
  25.           
  26.           
  27.           
  28.           
  29.       
  30.        
  31.       
  32.   
  33.       
  34.       
  35.     org.springframework.boot  
  36.     spring-boot-dependencies  
  37.     pom  
  38.     1.4.0.RELEASE  
  39.     import  
  40.       
  41.       
  42.   
  43.   
  44.       
  45.   
  46.   
  47.   
  48.       
  49.   
  50.   
  51.           
  52.           
  53.             com.alibaba  
  54.             druid  
  55.             ${druid.version}  
  56.           
  57.   
  58.           
  59.           
  60.             org.springframework.boot  
  61.             spring-boot-starter-web  
  62.               
  63.                   
  64.                     org.springframework.boot  
  65.                     spring-boot-starter-tomcat  
  66.                   
  67.               
  68.           
  69.           
  70.           
  71.             org.springframework.boot  
  72.             spring-boot-starter-jetty  
  73.           
  74.   
  75.           
  76.           
  77.             mysql  
  78.             mysql-connector-java  
  79.             ${jdbc.mysql.version}  
  80.           
  81.   
  82.           
  83.           
  84.             org.springframework.boot  
  85.             spring-boot-starter-velocity  
  86.           
  87.   
  88.           
  89.           
  90.             org.springframework.boot  
  91.             spring-boot-starter-test  
  92.           
  93.           
  94.           
  95.             org.springframework.boot  
  96.             spring-boot-starter-jdbc  
  97.           
  98.   
  99.       
  100.   
  101.   
  102.   
  103.       
  104.           
  105.             src/main/filters/xuele-${build.profile.id}.properties  
  106.           
  107.   
  108.           
  109.           
  110.               
  111.               
  112.                 src/main/resources  
  113.                   
  114.                     **/*  
  115.                   
  116.                   
  117.                   
  118.                   
  119.                 true  
  120.               
  121.   
  122.           
  123.   
  124.           
  125.               
  126.                   
  127.                     org.springframework.boot  
  128.                     spring-boot-maven-plugin  
  129.                   
  130.               
  131.           
  132.       
  133.   
  134.   
  135.   
  136.       
  137.           
  138.           
  139.             dev  
  140.               
  141.                 true  
  142.               
  143.              
  144.                dev  
  145.              
  146.           
  147.   
  148.           
  149.           
  150.             test  
  151.               
  152.                 test  
  153.               
  154.           
  155.   
  156.           
  157.           
  158.             product  
  159.               
  160.                 product  
  161.               
  162.           
  163.       
  164.   


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

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 



有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。 
技术债不能欠,健康债更不能欠, 求道之路,与君同行。 

你可能感兴趣的:(Spring,Boot,java,spring,maven)