springboot 1.5.X 升级2.X踩坑记录

2019-07-23  本文已影响0人  BlackWingXu

升级SpringBoot 2.1.6RELEASE 目前修改点

1. org.springframework.security.oauth.config ClientDetailsServiceConfigurer 配置修改

org.springframework.security.oauth2 配置在此省略
ClientDetailsServiceConfigurer:这个configurer定义了客户端细节服务修改 重点这里的.secret必须使用加密字符串(无论使用内存 redis 数据库 存放token令牌 )必须要加密校验

       @Override
         public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
             // @formatter:off
             clients.inMemory().withClient(CLIENT_ID)
                     .authorizedGrantTypes("password", "refresh_token")
                     .scopes("read", "write", "trust")
                     .resourceIds(RESOURCE_ID)
                     .secret(new BCryptPasswordEncoder().encode(Constant.SECURITY_SERVER))//这里重点 1.5.9版本的jar 无此校验  2.X 后 不加会Encoded password does not look like BCrypt
                     .accessTokenValiditySeconds(Math.toIntExact(TimeUnit.DAYS.toSeconds(30)))
                     .refreshTokenValiditySeconds(Math.toIntExact(TimeUnit.DAYS.toSeconds(30)));
             // @formatter:on
         }

2. controller 层单独参数就是要默认传 eg: String param param不传过不了框架 可用 @RequestParam(require=false)

3. 接口URL中不能出现双反斜杠 (调查Spring security 5.X 修改了源码)(调用接口自行检查)

4. 日期默认返回 UTC 标准格式 而不是1.X版本的long时间戳了

如果想返回long 时间戳 配置文件

spring.jackson.serialization.write-dates-as-timestamps = true 

但是 sql 不能使用 UNIX_TIMESTAMP 否则报错 TIMESTAMP cannot Long 个人理解 转两次long 报错

5. 数据库连接池默认更新为目前口碑性能最强的HikariCP

----- Hikari 连接池配置详细配置请访问https://github.com/brettwooldridge/HikariCP

    // 目前配置信息如下(需要根据系统实际使用情况优化)
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.type=com.zaxxer.hikari.HikariDataSource
    ## 最小空闲连接数量
    spring.datasource.hikari.minimum-idle=5
    ## 空闲连接存活最大时间,默认600000(10分钟)
    spring.datasource.hikari.idle-timeout=180000
    ## 连接池最大连接数,默认是10
    spring.datasource.hikari.maximum-pool-size=10
    ## 此属性控制从池返回的连接的默认自动提交行为,默认值:true
    spring.datasource.hikari.auto-commit=true
    ## 连接池母子
    spring.datasource.hikari.pool-name=MyHikariCP
    ## 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
    spring.datasource.hikari.max-lifetime=1800000
    ## 数据库连接超时时间,默认25秒,即25000 (目前pc web 和接口的超时时间)
    spring.datasource.hikari.connection-timeout=25000
    spring.datasource.hikari.connection-test-query=SELECT 1
上一篇 下一篇

猜你喜欢

热点阅读