# 配置文件

微服务版集成了Nacos做为配置中心,因此配置信息分为两部分存储,一部分是本地配置,另一部分存储在配置中心nacos中,

本地配置一般主要配置服务名称、注册中心、配置中心的远程地址等信息, 远程配置中心一般配置其他的配置信息。

# 本地配置

# 应用名称

通过feign调用此服务时需要和该配置项一致

spring:
  application:
    # 应用名称,通过feign调用此服务时需要和该配置项一致
    name: hos-user-service

# 更换环境配置文件

如果有多个可变配置信息保存在多个配置文件中,可以通过修改spring.profiles.active的值,选择对应的环境配置文件 例如:值为dev,则读取的就是application-dev.yml配置文件

# spring信息
spring:
  profiles:
    # 配置文件 dev
    active: dev

# 注册中心nacos

使用spring cloud Alibaba中nacos做注册中心时,需要配置nacos的远程地址、命名空间、组名, 具体介绍见 nacos相关介绍

spring:
  cloud:
    #naocs配置项
    nacos:
      discovery:
        group: hos
        # NacosServer 启动监听的ip地址和端口
        server-addr: ${ENV_NACOS_ADDERSS:192.16.18.196:10011}
        namespace: ${ENV_DIS_NAMESPACE:demo}

# 配置中心nacos

使用spring cloud Alibaba中nacos做配置中心时,需要配置nacos的远程地址、命名空间、组名,以及nacos配置中心上对应的文件名及文件格式, 具体介绍见nacos相关介绍

spring:
  cloud:
    #naocs配置项
    nacos:
      config:
        # nacos上的配置文件格式
        file-extension: yml
        # 和nacos的dataId保持一致
        prefix: hos-user
        # 和nacos的groupId保持一致
        group: hos
        # nacos的地址,多个以逗号分割
        server-addr: ${ENV_NACOS_ADDERSS:192.16.18.196:10011}
        # nacos 的命名空间
        namespace: ${ENV_DIS_NAMESPACE:demo}

# 本地完整文件

bootstrap.yml

spring:
  application:
    # 应用名称,通过feign调用此服务时需要和该配置项一致
    name: hos-user-service
  profiles:
    active: ${SPRING_PROFILES_ACTIVE:dev}
  main:
    allow-bean-definition-overriding: true

bootstrap-dev.yml

spring:
  cloud:
    #naocs配置项
    nacos:
      config:
        # nacos上的配置文件格式
        file-extension: yml
        # 和nacos的dataId保持一致
        prefix: hos-user
        # 和nacos的groupId保持一致
        group: hos
        # nacos的地址,多个以逗号分割
        server-addr: ${ENV_NACOS_ADDERSS:192.16.18.196:10011}
        # nacos 的命名空间
        namespace: ${ENV_DIS_NAMESPACE:demo}
      discovery:
        group: hos
        server-addr: ${ENV_NACOS_ADDERSS:192.16.18.196:10011}
        namespace: ${ENV_DIS_NAMESPACE:demo}

server:
  port: 8003

# nacos中配置信息

下图为示例代码中在nacos的配置文件,主要分为业务微服务和网关gateway配置 nacos中配置文件列表

# mybatis以及maybatis-plus相关配置

如果有需要修改mapper对应的resource下xml文件路径,需要修改mybatis-plus.mapper-locations 具体配置,可以查询其官网

mybatis-plus:
  # mapper文件存放地址
  mapper-locations: classpath*:/mapper/*/*.xml
  configuration:
    # 不开启驼峰的话,使用@TableField注解
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 全局配置 
  global-config:
    # 是否开启logo
    banner: false

# 数据源连接池配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      url: jdbc:mysql://localhost:3306/hos_base_app?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver
      web-stat-filter:
        enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
        url-pattern: /* #拦截该项目下的一切请求
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico  #对这些请求放行
        session-stat-enable: true
        principal-session-name: session_name
        principal-cookie-name: cookie_name

      stat-view-servlet: # StatViewServlet配置
        enabled: true #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
        url-pattern: /druid/*  #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址
        reset-enable: false #禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用
        login-username: admin #监控页面登录的用户名
        login-password: 123456 #监控页面登录的密码
        allow: 223.71.143.178 #白名单中需要添加访问浏览器的外网ip

通常我们只修改数据库url,username,password,driver-class-name就可以。其他相关参数请参考 跳转到:数据源连接池

# hos缓存配置

framework:
  hoscache:
    ##使用的缓存类型,目前支持 redis ehcache,如果使用redis还需要单独设置redis的连接信息
    type: ehcache
    ehcachePath: /temp
    #初始化的CacheName的值,CacheName为必须值
    # 其他各个配置项的默认值
    # timeToIdleSeconds: 1800(ehcache使用,缓存中的数据被第一次访问之后的过期时间,单位为 s)
    # timeToLiveSeconds: 1800(ehcache、redis 共用,缓存放入之后的存活时间,单位为 s)
    # maxEntriesLocalDisk: 10000000(ehcache使用, 硬盘最大缓存个数)
    # maxEntriesLocalHeap: 10000(ehcache使用, 堆内存中最大缓存对象数,0没有限制)
    # memoryStoreEvictionPolicy: "LRU"(ehcache使用 ,当达到maxElementsInMemory时,如何强制进行驱逐默认使用"最近使用(LRU)"策略,其它还有先入先出FIFO,最少使用LFU,较少使用LRU)
    # diskExpiryThreadIntervalSeconds: 120(ehcache使用, 磁盘失效线程运行时间间隔)
    # eternal: false(ehcache使用, 是否持久化)
    cacheConfigureNames:
      ###在线用户所属的缓存编码
      - cacheName: online-pc-cache
        timeToLiveSeconds: 1800
        cacheTitle: 在线用户
        cacheDesc: 当前在线的用户
        important: true

    

具体配置详解,请参考:HOSCache组件

# redis配置

redis配置,设置了redis集群的连接信息

spring:
  redis:
    password: xxxx
    database: 0
    timeout: 5000
    cluster:
      nodes: 192.16.18.196:7001,192.16.18.196:7002,192.16.18.196:7003,192.16.18.196:7004,192.16.18.196:7005,192.16.18.196:7006

# 接口签名配置

framework:
  interface-encryption:
    #是否全局进行接口签名验证,开启之后对全局的数据进行解密加密
    isGlobal: false
    #全局下的加密方式,以及单个接口的默认加密方式,支持的方式有 AES、RSA、国密(SM4)
    decryptType: SM4
    #是否对接口的入参进行解密,全局模式下使用
    isDecrypt: false
    #对body里面的数据单个解密,还是作为一个整体解密
    decryptAll:
      # RequestParam(param参数)的参数进行全参数解密
      params: false
      # RequestBody(body参数)的参数进行全参数解密
      body: false
    # 解密的参数配置,isGlobal为ture(全局解密),encrypAll为false的情况下,只对单个参数进行解密
    decryptParam:
      # 对请求RequestParam(param参数)中附加的参数进行解密
      params:
        - password
      # 对RequestBody(body参数)里面的参数进行解密,只支持键值对的JSON
      body:
        - password
    #是否对接口返回的结果进行加密,默认情况只加密data字段的数据
    isEncrypt: false
    # RSA公钥,用于加密解密
    publicKey:
    # RSA私钥,用于加密解密
    privateKey:
    # 秘钥,用于接口数据加解密
    secret: 1234567890123456
    # 全局情况下,排除的请求
    excludeUrl:
      - /ceshipost001/*

具体配置详解,请参考:接口加解密组件

# hos安全配置

framework:
  #安全攻击防护相关配置
  security:
    #防xss攻击,默认关闭
    xss:
      enable: false
    #防csrf攻击,默认关闭。此处需要注意:csrf开关开启后,除"GET", "HEAD", "TRACE", "OPTIONS"四类请求可以直接通过外,其他请求都会拦截
    #由于防csrf采用了token机制,所以要求前端页面传入csrfToken,传入方式有两种:
    #方式一:隐藏域  <input type='hidden' name='${_csrf.parameterName}' value='${_csrf.token}'>写法固定;
    #方式二:header中传入,如果token保存在session中(默认),则header-name为 X-CSRF-TOKEN,header-value为token具体值;
    #如果token保存在cookie中,则header-name为 X-XSRF-TOKEN,header-value为token具体值
    csrf:
      enable: false
    #跨域,默认关闭
    cors:
      enable: true
        #allowed:
        #跨域允许来源,可配置多个,在framework.security.cors.enable=true时有效,不配置默认允许所有来源
      #origins: https://www.baidu.com,https://www.taobao.com
      #跨域允许方法,可配置多个,在framework.security.cors.enable=true时有效,不配置默认允许所有方法
      #methods: GET,POST,PUT,DELETE

具体配置详解,请参考:安全配置

# hos操作日志配置

framework:
  # 操作日志输出位置:logFile,database 二者可以同时存在,默认为logFile
  # logFile表示输出到log文件,database表示输出数据库中的sys_oper_log表中
  # 该配置只对OperLog注解生效,与其他日志输出无关
  oper-log:
    out: database

具体配置详解,请参考:日志

# gateway配置

gateway为spring-cloud-gateway的配置信息

spring:
  cloud:
    gateway:
      enabled: true
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由的功能,利用微服务名路由
          lower-case-service-id: true #将请求路径上的服务名配置为小写
      # 路由(routes:路由,它由唯一标识(ID)、目标服务地址(uri)、一组断言(predicates)和一组过滤器组成(filters)。filters 不是必需参数。)
      routes:
        # 路由标识(id:标识,具有唯一性)   简单尝试
        - id: hos-contract-service
          # 目标服务地址(uri:地址,请求转发后的地址)
          uri: lb://hos-contract-service
          # 路由条件(predicates:断言,匹配 HTTP 请求内容)
          predicates:
            ## 转发地址格式为 uri/archive
            - Path=/contract/**
          filters:
            - StripPrefix=1
        - id: hos-user-service
          # 目标服务地址(uri:地址,请求转发后的地址)
          uri: lb://hos-user-service
          # 路由条件(predicates:断言,匹配 HTTP 请求内容)
          predicates:
            ## 转发地址格式为 uri/archive
            - Path=/user/**
          filters:
            - StripPrefix=1
       
    

说明: Gateway网关简介及使用

# 业务服务的配置信息(全量)

spring:
  # 数据库相关配置项,使用druid数据源
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      url: jdbc:mysql://192.16.18.196:10015/demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
      username: xxxx
      password: xxxx
      driver-class-name: com.mysql.jdbc.Driver
      web-stat-filter:
        enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
        url-pattern: /* #拦截该项目下的一切请求
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico  #对这些请求放行
        session-stat-enable: true
        principal-session-name: session_name
        principal-cookie-name: cookie_name

      stat-view-servlet: # StatViewServlet配置
        enabled: true #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
        url-pattern: /druid/*  #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址
        reset-enable: false #禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用
        login-username: admin #监控页面登录的用户名
        login-password: 123456 #监控页面登录的密码
        allow: 223.71.143.178 #白名单中需要添加访问浏览器的外网ip
  # redis地址,
  redis:
    password: xxxx
    database: 0
    timeout: 5000
    cluster:
      nodes: 192.16.18.196:7001,192.16.18.196:7002,192.16.18.196:7003,192.16.18.196:7004,192.16.18.196:7005,192.16.18.196:7006

feign:
  httpclient:
    enabled: true



# mybatis-plus配置
mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    banner: false

#安全攻击防护相关配置
framework:
  security:
    #防xss攻击,默认关闭
    xss:
      enable: false
    #防csrf攻击,默认关闭。此处需要注意:csrf开关开启后,除"GET", "HEAD", "TRACE", "OPTIONS"四类请求可以直接通过外,其他请求都会拦截
    #由于防csrf采用了token机制,所以要求前端页面传入csrfToken,传入方式有两种:
    #方式一:隐藏域  <input type='hidden' name='${_csrf.parameterName}' value='${_csrf.token}'>写法固定;
    #方式二:header中传入,如果token保存在session中(默认),则header-name为 X-CSRF-TOKEN,header-value为token具体值;
    #如果token保存在cookie中,则header-name为 X-XSRF-TOKEN,header-value为token具体值
    csrf:
      enable: false
    #跨域,默认关闭
    cors:
      enable: false
      #allowed:
        #跨域允许来源,可配置多个,在framework.security.cors.enable=true时有效,不配置默认允许所有来源
        #origins: https://www.baidu.com,https://www.taobao.com
        #跨域允许方法,可配置多个,在framework.security.cors.enable=true时有效,不配置默认允许所有方法
        #methods: GET,POST,PUT,DELETE
  # 操作日志输出位置:logFile,database 二者可以同时存在,默认为logFile
  # logFile表示输出到log文件,database表示输出数据库中的sys_oper_log表中
  # 该配置只对OperLog注解生效,与其他日志输出无关
  oper-log:
    out: logFile

说明:

  • mybatis-plus:是mybatis-plus配置项,具体配置,可以查询其官网
  • spring.datasource:数据源配置参数,这里主要配置了数据库连接,账号和密码以及相关优化参数设置,每个参数的具体含义自行查阅资料;
  • spring.redis:redis配置,设置了redis集群的连接信息
  • framework.security:hos提供的安全组件,默认是关闭
  • framework.oper-log.out:hos提供的操作日志输出位置,logFile,database 二者可以同时存在,默认为logFile,logFile表示输出到log文件,database表示输出数据库中的sys_oper_log表中,该配置只对OperLog注解生效,与其他日志输出无关