Spring Boot 2.x所遇问题记

733 阅读1分钟
  1. Spring Boot 连接多个数据库 如果使用JPA来连接,要注意的坑是yaml中指定数据库的urlspring.datasource.xxxx.url 会报错,报错是找不到jdbc-url。问题原因是DataSource的不兼容导致的,Spring Boot 2.0启用了新的连接池HikariCP,这个库使用的是jdbc-url来连接的。 解决方法:可以参考这个回答:# After Spring Boot 2.0 migration: jdbcUrl is required with driverClassName ,也可以参考这篇回答jdbcUrl is required with driverClassName错误解决

具体的配置多数据源,可以参考文章:SpringBoot多数据源

  1. 使用Spring Data JPA遇到SQL保留字段 我在启动的时候,报了一个无法创建表的问题,把这个sql拉出去执行一下,确实有问题。看到里面有个字段是叫range,我觉得可能是遇到SQL保留字段了,加了引号`range`就能创建了。那么在Spring中要如何解决呢.
    // range是mysql 保留字段,所以要特殊处理一下。
    @Column(name = "[range]")
    private String range;
  1. 实体类的字段不与表中字段映射 可通过在字段上添加@Transient注解,然后import的是import javax.persistence.Transient;,即可解决。 如
    @Transient
    private String appName;
  1. Spring Boot的返回json命名转换的问题 Spring Boot默认会返回驼峰表示的JSON,但如果我们想要的小写加下划线的呢?
  • 可以采用@JsonProperty(name="app_name")挨个命名
  • 可以采用@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)对某个类命名,其中命名规则也可以自定义
  • 还可以使用全局命名,可通过如下设置spring的yml来解决
spring:
  jackson:
    serialization:
      WRITE_DATES_AS_TIMESTAMPS: false
    default-property-inclusion: non_null
    property-naming-strategy: SNAKE_CASE

参考:Springboot统一配置Jackson(全局命名转换)