全栈程序猿的成长程序员SpringBoot极简教程 · Spring Boot

yml中某些配置不生效的解决方案

2018-05-09  本文已影响160人  小尘哥

起因

将springboot项目的properties配置文件改为yml之后redis死活连不上了。

找问题

springboot的配置文件有两种方式:properties和yml,之前properties时候是没有任何问题的,那么来看一下yml的配置:

spring:
# Redis数据库索引(默认为0)
  redis:
    #数据库索引
    database: 0
    host: 127.0.0.1
    port: 6379
    password: 123456789
    jedis:
      pool:
        #最大连接数
        max-active: 8
        #最大阻塞等待时间(负数表示没限制)
        max-wait: -1ms
        #最大空闲
        max-idle: 8
        #最小空闲
        min-idle: 0
    timeout: 300s
# THYMELEAF (ThymeleafAutoConfiguration)
spring:
  thymeleaf:
    cache: false
    check-template: true
    check-template-location: true
    enabled: true
    encoding: utf-8
    #去掉thymeleaf的严格的模板校验
    mode: LEGACYHTML5
    prefix: classpath:/templates/
    suffix: .html
    excluded-view-names:
spring:
  groovy:
    template:
      cache: false

看起来貌似也没什么问题,bug,debug跟源码代码发现redis配置均未起作用,但是有个神奇的地方,如果把下面的thymeleaf和groovy都删掉,redis配置就起作用了,推测肯定是某个地方冲突了,仔细瞅,上面配置文件中有三个“spring:”,删掉下面两个“spring:”,果然一切ok。

解决

保证不能有重复的一级节点。
也许只是简单的知识点,但是只有踩过,才知道坑深,此坑爬了三个小时,希望小伙伴们不要再爬此坑······
正确配置如下

# THYMELEAF (ThymeleafAutoConfiguration)
spring:
  thymeleaf:
    cache: false
    check-template: true
    check-template-location: true
    enabled: true
    encoding: utf-8
    #去掉thymeleaf的严格的模板校验
    mode: LEGACYHTML5
    prefix: classpath:/templates/
    suffix: .html
    excluded-view-names:
  groovy:
    template:
      cache: false
# Redis数据库索引(默认为0)
  redis:
    #数据库索引
    database: 0
    host: 127.0.0.1
    port: 6379
    password: 123456789
    jedis:
      pool:
        #最大连接数
        max-active: 8
        #最大阻塞等待时间(负数表示没限制)
        max-wait: -1ms
        #最大空闲
        max-idle: 8
        #最小空闲
        min-idle: 0
    timeout: 300s
上一篇下一篇

猜你喜欢

热点阅读