louislivi / fastdep

Fast integration dependencies in spring boot.是一个快速集成依赖的框架,集成了一些常用公共的依赖。例:多数据源,Redis,JWT...
https://fastdep.louislivi.com
Apache License 2.0
259 stars 52 forks source link

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer #3

Closed ktmswzw closed 4 years ago

ktmswzw commented 4 years ago

FastDepRedisRegister :(Integer)map.get("port")

yml: comm: #连接名称 database: 2 host: ${app.server.redis.host} password: ${app.server.redis.password} port: ${app.server.redis.port}

dev.yml

redis: host: 127.0.01 port: 43379 password: 123qwe$R0,0.

louislivi commented 4 years ago

示例

  redis:
    redis1:
      database: 0
      host: 127.0.0.1
      port: 6379
      lettuce: #下面为连接池的补充设置
        shutdown-timeout: 100 # 关闭超时时间
        pool:
          max-active: 18 # 连接池最大连接数(使用负值表示没有限制)
          max-idle: 8 # 连接池中的最大空闲连接
          max-wait: 30 # 连接池最大阻塞等待时间(使用负值表示没有限制)
          min-idle: 0 # 连接池中的最小空闲连接
    redis2:
      database: 1
      host: 127.0.0.1
      port: 6379
      lettuce: #下面为连接池的补充设置
        shutdown-timeout: 100 # 关闭超时时间
        pool:
          max-active: 18 # 连接池最大连接数(使用负值表示没有限制)
          max-idle: 8 # 连接池中的最大空闲连接
          max-wait: 30 # 连接池最大阻塞等待时间(使用负值表示没有限制)
          min-idle: 0 # 连接池中的最小空闲连接

层级必须为

redis:
    连接名称:
      database: 0
      host: 192.168.12.88
      port: 6379
      ...
ktmswzw commented 4 years ago

这个问题是端口来自于dev.yml文件的引用,不是直接写在yml中。如果代码写成Integer.parseInt(map.get("port"))就没有问题,和顺序没有关系 image

ktmswzw commented 4 years ago

image image

louislivi commented 4 years ago

是的使用${}后确实有这个问题,推荐直接在不同的配置文件中直接编写fastdep的配置项就可以解决这个问题,后续针对这块修复下

louislivi commented 4 years ago

已修复 e60b9d4fc1ff303e45b81de1565317fc513ebb0f