# 配置文件
微服务版集成了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配置
# 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注解生效,与其他日志输出无关