二、应用常用配置说明
约定:
//资源路径约定(不用配置;也不能配置)
resources/app.yml( 或 app.properties ) #为应用配置文件
resources/static/ #为静态文件根目录(v2.2.10 后支持)
resources/templates/ #为视图模板文件根目录(v2.2.10 后支持)
属性之间的引用,使用 ${...}
:
test.demo1: "${db1.url}" #引用应用属性
test.demo2: "jdbc:mysql:${db1.server}" #引用应用属性并组合
test.demo3: "jdbc:mysql:${db1.server}/${db1.db}" #引用多个应用属性并组合
test.demo4: "${JAVA_HOME}" #引用环境变量
test.demo5: "${.demo4}" #引用本级其它变量(v2.9.0 后支持)
使用参考:
1、服务端基本属性
#服务端口(默认为8080)
server.port: 8080
#服务主机(ip)
server.host: "0.0.0.0"
#服务包装端口(默认为 ${server.port})//v1.12.1 后支持 //一般用docker + 服务注册时才可能用到
server.wrapPort: 8080
#服务包装主机(ip)//v1.12.1 后支持
server.wrapHost: "0.0.0.0"
#服务上下文路径
server.contextPath: "/test-service/" #v1.11.2 后支持(或者 "!/test-service/" 表示原路径不能再请求 v2.6.3 后支持)
#服务 http 信号名称,服务注册时可以为信号指定名称(默认为 ${solon.app.name})
server.http.name: "waterapi"
#服务 http 信号端口(默认为 ${server.port})
server.http.port: 8080
#服务 http 信号主机(ip)
server.http.host: "0.0.0.0"
#服务 http 信号包装端口 //v1.12.1 后支持 //一般用docker + 服务注册时才可能用到
server.http.wrapPort: 8080
#服务 http 信号包装主机(ip)//v1.12.1 后支持
server.http.wrapHost: "0.0.0.0"
#服务 http 最小线程数(默认:0表示自动,支持固定值 2 或 内核倍数 x2)//v1.10.13 后支持 //一般不用配置
server.http.coreThreads: 0
#服务 http 最大线程数(默认:0表示自动,支持固定值 32 或 内核倍数 x32) //v1.10.13 后支持
server.http.maxThreads: 0
#服务 http 闲置线程或连接超时(0表示自动,一般是1分钟,单位毫秒) //v1.10.13 后支持
server.http.idleTimeout: 0
#服务 http 是否为IO密集型? //v1.12.2 后支持
server.http.ioBound: true
#服务 socket 信号名称,服务注册时可以为信号指定名称(默认为 ${solon.app.name})
server.socket.name: "waterapi.tcp"
#服务 socket 信号端口(默认为 20000+${server.port})
server.socket.port: 28080
#服务 socket 信号主机(ip)
server.socket.host: "0.0.0.0"
#服务 socket 信号包装端口 //v1.12.1 后支持 //一般用docker + 服务注册时才可能用到
server.socket.wrapPort: 28080
#服务 socket 信号包装主机(ip)//v1.12.1 后支持
server.socket.wrapHost: "0.0.0.0"
#服务 socket 最小线程数(默认:0表示自动,支持固定值 2 或 倍数 x2)) //v1.10.13 后支持
server.socket.coreThreads: 0
#服务 socket 最大线程数(默认:0表示自动,支持固定值 32 或 倍数 x32)) //v1.10.13 后支持
server.socket.maxThreads: 0
#服务 socket 闲置线程或连接超时(0表示自动,单位毫秒)) //v1.10.13 后支持
server.socket.idleTimeout: 0
#服务 socket 是否为IO密集型? //v1.12.2 后支持
server.socket.ioBound: true
#服务 websocket 信号名称,服务注册时可以为信号指定名称(默认为 ${solon.app.name})
server.websocket.name: "waterapi.ws"
#服务 websocket 信号端口(默认为 10000+${server.port})
server.websocket.port: 18080
#服务 websocket 信号主机(ip)
server.websocket.host: "0.0.0.0"
#服务 websocket 信号包装端口 //v1.12.1 后支持 //一般用docker + 服务注册时才可能用到
server.websocket.wrapPort: 18080
#服务 websocket 信号包装主机(ip)//v1.12.1 后支持
server.websocket.wrapHost: "0.0.0.0"
#服务 websocket 最小线程数(默认:0表示自动,支持固定值 2 或 倍数 x2)) //v1.10.13 后支持
server.websocket.coreThreads: 0
#服务 websocket 最大线程数(默认:0表示自动,支持固定值 32 或 倍数 x32)) //v1.10.13 后支持
server.websocket.maxThreads: 0
#服务 websocket 闲置线程或连接超时(0表示自动,单位毫秒)) //v1.10.13 后支持
server.websocket.idleTimeout: 0
#服务 websocket 是否为IO密集型? //v1.12.2 后支持
server.websocket.ioBound: true
关于包装主机与包装端口的说明:
- 比如,服务在docker里运行,就相当于被docker包装了一层。
- 此时,要向外部注册服务,就可能需要使用包装主机与包装端口。
2、请求会话相关
#设定最大的请求包大小(或表单项的值大小)//默认: 2m
server.request.maxBodySize: 2mb #kb,mb
#设定最大的上传文件大小
server.request.maxFileSize: 2mb #kb,mb (默认使用 maxBodySize 配置值)
#设定最大的请求头大小//默认: 8k
server.request.maxHeaderSize: 8kb #kb,mb
#设定上传使用临时文件(v2.7.2 后支持)
server.request.useTempfile: false //默认 false
#设定路由使用原始路径(v2.8.6 后支持)//即未解码状态
server.request.useRawpath: false //默认 false
#设定请求体编码
server.request.encoding: "utf-8"
#设定响应体编码
server.response.encoding: "utf-8"
#设定会话超时秒数(单位:秒)
server.session.timeout: 7200
#设定会话id的cookieName
server.session.cookieName: "SOLONID"
#设定会话状态的cookie域(默认为当前域名)
server.session.cookieDomain: noear.org
3、服务端SSL证书配置属性(https)
#设定 ssl 证书(属于所有信号的公共配置)
server.ssl.keyStore: "/data/ca/demo.jks" #(本地绝对位置)或 "classpath:demo.pfx"(资源目录位置)
server.ssl.keyPassword: "demo"
#设定 http 信号的 ssl 证书(如果没有,会使用 server.ssl 的配置)//v2.3.7 后支持
server.http.ssl.enable: true
server.http.ssl.keyStore: "/data/ca/demo.jks" #(本地绝对位置)或 "classpath:demo.pfx"(资源目录位置)
server.http.ssl.keyPassword: "demo"
#设定 socket 信号的 ssl 证书(如果没有,会使用 server.ssl 的配置)//v2.3.7 后支持
server.socket.ssl.enable: true
server.socket.ssl.keyStore: "/data/ca/demo.jks" #(本地绝对位置)或 "classpath:demo.pfx"(资源目录位置)
server.socket.ssl.keyPassword: "demo"
#设定 websocket 信号的 ssl 证书(如果没有,会使用 server.ssl 的配置)//v2.3.7 后支持
server.websocket.ssl.enable: true
server.websocket.ssl.keyStore: "/data/ca/demo.jks" #(本地绝对位置)或 "classpath:demo.pfx"(资源目录位置)
server.websocket.ssl.keyPassword: "demo"
注意:添加 ssl 证书后,应用的 "server.port" 端口只能用 https
来访问。
4、服务端压缩输出(gzip)
v2.5.7 后支持
# 设定 http gzip配置
server.http.gzip.enable: false #是否启用(默认 fasle)
server.http.gzip.minSize: 4096 #最小多少大小才启用(默认 4k)
server.http.gzip.mimeTypes: 'text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml'
注意:mimeTypes 默认的常见的类型,如果有需要增量添加
5、应用基本属性
#应用名称
solon.app.name: "waterapi"
#应用组
solon.app.group: "water"
#应用命名空间(一般用不到,只有支持的组件才用)
solon.app.namespace: "demo"
#应用标题
solon.app.title: "WATER"
#应用是否启用?
solon.app.enabled: true
#应用体外扩展目录
solon.extend: "ext"
#应用元信息输出开启(输出每个插件的信息)
solon.output.meta: 1
solon.app.*
属性,可通过 Solon.cfg().app*()
获取。
6、应用环境配置切换
#应用环境配置(主要用于切换包内不同的配置文件)
solon.env: dev
#例:
# app.yml #应用主配置(必然会加载)
# app-dev.yml #应用dev环境配置
# app-pro.yml #应用pro环境配置
#
#启动时:java -Dsolon.env=pro -jar demo.jar 或者 java -jar demo.jar --env=pro
7、应用配置增强
#添加外部扩展配置(用于指定外部配置。策略:先加载内部的,再加载外部的盖上去)
solon.config.add: "./app.yml" #把文件放外面(多个用","隔开) //替代已弃用的 solon.config
#添加多个内部配置(在 app.yml 之外,添加配置加载)//v2.2.7 后支持
solon.config.load:
- "app-ds-${solon.env}.yml" #可以是环境相关的
- "app-auth_${solon.env}.yml"
- "config/common.yml" #也可以环境无关的或者带目录的
8、视图后缀与模板引擎的映射配置
solon.view.prefix: "resources/templates/" #默认为资源目录,使用体外目录时以"file:"开头(例:"file:/data/demo/")
#默认约定的配置(不需要配置,除非要修改)
solon.view.mapping.htm: BeetlRender #简写
solon.view.mapping.shtm: EnjoyRender
solon.view.mapping.ftl: FreemarkerRender
solon.view.mapping.jsp: JspRender
solon.view.mapping.html: ThymeleafRender
solon.view.mapping.vm: VelocityRender
#添加自义定映射时,需要写全类名
solon.view.mapping.vm: org.noear.solon.view.velocity.VelocityRender #全名(一般用简写)
9、MIME 配置
一般有特别的静态资源后缀,才会用到
#添加MIME印射(如果有需要?)
solon.mime:
vue: "text/html"
map: "application/json"
log: "text/plain" #这三行只是示例一下!
10、安全停止配置
solon.stop.safe: 0 #安全停止(0或1)//(v2.1.0 后支持;之前只能用接口启用)
solon.stop.delay: 10 #安全停止的延时秒数(默认10秒)
11、虚拟线程配置
solon.threads.virtual.enabled: false #启用虚拟线程池(默认false)//v2.7.3 后支持