新增一个极小的内核web服务,1秒启动项目。

This commit is contained in:
thinkgem
2023-09-21 15:30:19 +08:00
parent 81cb9dcbba
commit dff27dc659
30 changed files with 1261 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
# 使用环境配置,只需 JVM 参数里加:-Dspring.profiles.active=prod
#======================================#
#========== Server settings ===========#
#======================================#
server:
port: 8980
servlet:
context-path: /js
#======================================#
#========== Database sttings ==========#
#======================================#
# 数据库连接
jdbc:
# Mysql 数据库配置
type: mysql
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.56.1:3306/jeesite?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
username: jeesite
password: jeesite
testSql: SELECT 1
# 数据库连接池配置
pool:
# 初始化连接数
init: 1
# 最小连接数
minIdle: 3
# 最大连接数
maxActive: 20
#======================================#
#========== Spring settings ===========#
#======================================#
# 日志配置
logging:
config: classpath:config/logback-spring-prod.xml

View File

@@ -0,0 +1,174 @@
#======================================#
#========== Project settings ==========#
#======================================#
# 产品或项目名称、软件开发公司名称
productName: JeeSite Demo
companyName: ThinkGem
# 产品版本、版权年份
productVersion: V5.5
copyrightYear: 2023
# 是否演示模式
demoMode: false
# 专为分离端提供接口服务
apiMode: false
#======================================#
#========== Server settings ===========#
#======================================#
server:
port: 8980
servlet:
context-path: /js
register-default-servlet: false
# encoding.enabled: true
tomcat:
uri-encoding: UTF-8
# 表单请求数据的最大大小
max-http-form-post-size: 20MB
# # 进程的最大连接数
# max-connections: 8192
# # 连接数满后的排队个数
# accept-count: 100
# # 线程数最大和最小个数
# threads:
# max: 200
# min-spare: 10
# 当 Nginx 为 httpstomcat 为 http 时,设置该选项为 true
schemeHttps: false
#======================================#
#========== Database sttings ==========#
#======================================#
# 数据库连接(默认关闭,如果和 web.core.enabled 同时开启可使用如下功能:
# 配置参数http://127.0.0.1:8980/js/a/sys/config/list
# 模块管理http://127.0.0.1:8980/js/a/sys/module/list
# 字典管理http://127.0.0.1:8980/js/a/sys/dictType/list
jdbc:
# # Mysql 数据库配置
# type: mysql
# driver: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://127.0.0.1:3306/jeesite_v5?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
# username: root
# password: 123456
# testSql: SELECT 1
# 数据库连接池配置
pool:
# 初始化连接数
init: 1
# 最小连接数
minIdle: 3
# 最大连接数
maxActive: 20
#======================================#
#========== Framework settings ========#
#======================================#
spring:
# 应用程序名称
application:
name: jeesite-web
# 环境名称(注意:不可设置为 test 它是单元测试专用的名称)
profiles:
active: default
# 打印横幅
main:
bannerMode: "off"
# MVC 映射匹配策略
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
# JTA事务
jta:
enabled: false
# 缓存配置
cache:
# 缓存及会话共享(专业版)
isClusterMode: false
# 日志配置
logging:
config: classpath:config/logback-spring.xml
# 管理基础路径
adminPath: /a
# 前端基础路径
frontPath: /f
# 用户权限相关
user:
enabled: false
# 国际化管理
lang:
enabled: false
# 任务调度
job:
enabled: false
# 代码生成
gen:
enabled: false
# 系统监控(默认开启,可关闭)访问地址如下:
# 服务监控http://127.0.0.1:8980/js/a/state/server/index
# 缓存监控http://127.0.0.1:8980/js/a/state/cache/index
state:
enabled: true
# Web 相关
web:
# MVC拦截器访问日志和手机视图
interceptor:
log:
enabled: false
mobile:
enabled: false
# 是否启用核心内置功能的Controller加载
core:
enabled: false
# 在线API文档工具
swagger:
enabled: false
# Mapper文件刷新线程
mybatis:
mapper:
refresh:
enabled: false
# 文件上传
file:
enabled: false
isFileStreamDown: false
# 消息提醒中心
msg:
enabled: false
#======================================#
#========== Project settings ==========#
#======================================#

View File

@@ -0,0 +1,158 @@
#######默认配置(/org/beetl/core/beetl-default.properties
ENGINE=org.beetl.core.engine.FastRuntimeEngine
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
DELIMITER_PLACEHOLDER_START2="#{
DELIMITER_PLACEHOLDER_END2=}"
DELIMITER_STATEMENT_START=<%
DELIMITER_STATEMENT_END=%>
DELIMITER_STATEMENT_START2=//#
DELIMITER_STATEMENT_END2=
DIRECT_BYTE_OUTPUT = FALSE
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = #
HTML_TAG_BINDING_ATTRIBUTE = var,export
HTML_TAG_ATTR_CONVERT=com.jeesite.common.beetl.text.BlankAttributeNameConvert
NATIVE_CALL = TRUE
TEMPLATE_CHARSET = UTF-8
ERROR_HANDLER = com.jeesite.common.beetl.handler.LoggerErrorHandler
NATIVE_SECUARTY_MANAGER = org.beetl.core.DefaultNativeSecurityManager
RESOURCE_LOADER = org.beetl.core.resource.ClasspathResourceLoader
MVC_STRICT = FALSE
#导入调用静态方法类
IMPORT_PACKAGE=
##导入JeeSite调用静态方法类自动合并IMPORT_PACKAGE设置
IMPORT_PACKAGE_core=\
com.jeesite.common.config.;\
com.jeesite.common.codec.;\
com.jeesite.common.collect.;\
com.jeesite.common.idgen.;\
com.jeesite.common.lang.;\
com.jeesite.common.mapper.;\
com.jeesite.common.reflect.;\
com.jeesite.common.security.;\
com.jeesite.common.web.http.;\
com.jeesite.modules.sys.utils.;\
com.jeesite.common.entity.;\
com.jeesite.common.service.;\
com.jeesite.common.utils.;\
### 资源配置resource后的属性只限于特定ResourceLoader ####
#classpath 跟路径,与框架集成的时候,此配置会被框架代码覆盖而不能生效
RESOURCE.root = views
#是否检测文件变化
RESOURCE.autoCheck = TRUE
#自定义脚本方法文件位置
RESOURCE.functionRoot = functions
#自定义脚本方法文件的后缀
RESOURCE.functionSuffix = html
#自定义标签文件位置
RESOURCE.tagRoot = htmltags
#自定义标签文件后缀
RESOURCE.tagSuffix = html
#如果采用beetl集成的web应用可以在渲染模板前调用如下类,此类必须实现WebRenderExt接口
WEBAPP_EXT =
#允许html function or Tag 使用特殊的定界符因为function或者tag通常有大量beetl语句
FUNCTION_TAG_LIMITER=
##### 扩展,也可以通过特定框架注册##############
## 内置的方法
FN.date = org.beetl.ext.fn.DateFunction
FN.nvl = org.beetl.ext.fn.NVLFunction
FN.debug = org.beetl.ext.fn.DebugFunction
#兼容以前版本用has代替
FN.exist = org.beetl.ext.fn.CheckExistFunction
FN.has = org.beetl.ext.fn.CheckExistFunction
FN.printf = org.beetl.ext.fn.Printf
FN.decode = org.beetl.ext.fn.DecodeFunction
FN.assert = org.beetl.ext.fn.AssertFunction
FN.print = org.beetl.ext.fn.Print
FN.println = org.beetl.ext.fn.Println
FN.printFile = org.beetl.ext.fn.PrintFile
FN.trunc = org.beetl.ext.fn.TruncFunction
FN.trim = org.beetl.ext.fn.TruncFunction2
#兼容以前版本 empty用isEmpty代替
FN.empty = org.beetl.ext.fn.EmptyFunction
FN.qmark = org.beetl.ext.fn.QuestionMark
FN.isEmpty = org.beetl.ext.fn.EmptyExpressionFunction
FN.isNotEmpty = org.beetl.ext.fn.IsNotEmptyExpressionFunction
FN.parseInt = org.beetl.ext.fn.ParseInt
FN.parseLong = org.beetl.ext.fn.ParseLong
FN.parseDouble= org.beetl.ext.fn.ParseDouble
FN.range = org.beetl.ext.fn.Range
FN.flush = org.beetl.ext.fn.Flush
FN.json = org.beetl.ext.fn.Json
FN.pageCtx = org.beetl.ext.fn.PageContextFunction
FN.type.new=org.beetl.ext.fn.TypeNewFunction
FN.type.name=org.beetl.ext.fn.TypeNameFunction
FN.type.fullName=com.jeesite.common.beetl.ext.fn.TypeFullNameFunction
FN.global=org.beetl.ext.fn.DynamicGlobalValueFunction
FN.allGlobal=org.beetl.ext.fn.AllGlobaAsJsonlFunction
FN.hasAttribute=org.beetl.ext.fn.HasAttributeFunction
FN.env=org.beetl.ext.fn.EnvFunction
FN.parentTag=org.beetl.ext.fn.ParentTagFunction
##JeeSite自定义函数
FN.isBlank = com.jeesite.common.beetl.ext.fn.IsBlank
FN.isNotBlank = com.jeesite.common.beetl.ext.fn.IsNotBlank
FN.toBoolean = com.jeesite.common.beetl.ext.fn.ToBoolean
FN.toInteger = com.jeesite.common.beetl.ext.fn.ToInteger
FN.toJson = com.jeesite.common.beetl.ext.fn.ToJson
FN.fromJson = com.jeesite.common.beetl.ext.fn.FromJson
FN.hasPermi = com.jeesite.common.beetl.ext.fn.HasPermi
FN.hasRole = com.jeesite.common.beetl.ext.fn.HasRole
FN.cookie = com.jeesite.common.beetl.ext.fn.Cookie
FN.lang = com.jeesite.common.beetl.ext.fn.Lang
FN.text = com.jeesite.common.beetl.ext.fn.Text
FN.user = com.jeesite.common.beetl.ext.fn.User
##内置的功能包
FNP.strutil = org.beetl.ext.fn.StringUtil
FNP.reg = org.beetl.ext.fn.RegxFunctionUtil
FNP.array = org.beetl.ext.fn.ArrayUtil
FNP.dict = com.jeesite.common.beetl.ext.fn.DictUtil
##内置的格式化函数
FT.dateFormat = org.beetl.ext.format.DateFormat
FT.numberFormat = com.jeesite.common.beetl.ext.format.NumberFormat
FT.xss = com.jeesite.common.beetl.ext.format.XssFormat
##内置的默认格式化函数
FTC.java.util.Date = org.beetl.ext.format.DateFormat
FTC.java.sql.Date = org.beetl.ext.format.DateFormat
FTC.java.sql.Time = org.beetl.ext.format.DateFormat
FTC.java.sql.Timestamp = org.beetl.ext.format.DateFormat
FTC.java.lang.Short = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Long = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Integer = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Float = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.lang.Double = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.math.BigInteger = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.math.BigDecimal = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.util.concurrent.atomic.AtomicLong = com.jeesite.common.beetl.ext.format.NumberFormat
FTC.java.util.concurrent.atomic.AtomicInteger = com.jeesite.common.beetl.ext.format.NumberFormat
##虚拟属性 无
## 标签类
TAG.include= org.beetl.ext.tag.IncludeTag
TAG.includeFileTemplate= org.beetl.ext.tag.IncludeTag
TAG.incdlueJSP= org.beetl.ext.jsp.IncludeJSPTag
TAG.layout= org.beetl.ext.tag.LayoutTag
TAG.delete= org.beetl.ext.tag.DeleteTag
#TAG.htmltag= org.beetl.ext.tag.HTMLTagSupportWrapper
#TAG.htmltagvar= org.beetl.ext.tag.HTMLTagVarBindingWrapper
TAG.htmltag= com.jeesite.common.beetl.ext.tag.HTMLTag
TAG.htmltagvar= com.jeesite.common.beetl.ext.tag.HTMLTagVar
TAG.htmltagexport= com.jeesite.common.beetl.ext.tag.HTMLTagVar
TAG.cache= org.beetl.ext.tag.cache.CacheTag
# 一个html风格的include和layout <#html:include file="">
TAG.html.include= org.beetl.ext.tag.html.IncludeResourceHtmlTag
TAG.html.layout= org.beetl.ext.tag.html.LayoutResourceHtmlTag
TAG.html.set= org.beetl.ext.tag.html.SetHtmlTag
TAG.html.if= org.beetl.ext.tag.html.IfHtmlTag
TAG.html.foreach= org.beetl.ext.tag.html.ForeachHtmlTag
#TAG.includeUrl=org.beetl.ext.tag.IncludeUrlTag

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<!-- Log file path -->
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
<!-- Framework level setting -->
<include resource="config/logger-core.xml"/>
<logger name="org.mybatis.spring.transaction" level="INFO" />
<logger name="org.flowable.ui.modeler.domain" level="INFO" />
<logger name="org.flowable.idm.engine.impl.persistence" level="INFO" />
<logger name="org.flowable.task.service.impl.persistence" level="INFO" />
<logger name="org.flowable.identitylink.service.impl.persistence" level="INFO" />
<logger name="org.flowable.variable.service.impl.persistence" level="INFO" />
<logger name="org.flowable.engine.impl.persistence" level="INFO" />
<logger name="com.jeesite" level="INFO" />
<logger name="com.jeesite.common.mybatis.mapper" level="INFO" />
<!-- Project level setting -->
<!-- <logger name="your.package" level="DEBUG" /> -->
<!-- Console log output -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
</encoder>
</appender>
<!-- Log file debug output -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>-->
</appender>
<!-- Log file error output -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="WARN">
<appender-ref ref="console" />
<appender-ref ref="debug" />
<appender-ref ref="error" />
</root>
</configuration>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<!-- Log file path -->
<property name="log.path" value="${logPath:-${java.io.tmpdir:-.}}/logs" />
<!-- Framework level setting -->
<include resource="config/logger-core.xml"/>
<!-- Project level setting -->
<!-- <logger name="your.package" level="DEBUG" /> -->
<!-- Console log output -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
</encoder>
</appender>
<!-- Log file debug output -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>NEUTRAL</onMismatch>
</filter>-->
</appender>
<!-- Log file error output -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="WARN">
<appender-ref ref="console" />
<appender-ref ref="debug" />
<appender-ref ref="error" />
</root>
</configuration>

View File

@@ -0,0 +1,59 @@
<included>
<!-- https://github.com/spring-projects/spring-boot/blob/v2.0.5.RELEASE/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<logger name="org.springframework.boot.web.embedded" level="INFO" />
<logger name="net.oschina.j2cache.caffeine.CaffeineProvider" level="ERROR" />
<!-- <logger name="org.apache.ibatis" level="DEBUG" /> -->
<!-- <logger name="org.mybatis.spring" level="DEBUG" /> -->
<!-- <logger name="org.springframework.jdbc" level="DEBUG" /> -->
<logger name="org.mybatis.spring.transaction" level="DEBUG" />
<logger name="com.atomikos.icatch.config.UserTransactionServiceImp" level="ERROR" />
<logger name="com.atomikos.icatch.provider.imp.AssemblerImp" level="ERROR" />
<logger name="com.atomikos.jdbc.AbstractDataSourceBean" level="ERROR" />
<logger name="com.atomikos.jdbc.AtomikosConnectionProxy" level="ERROR" />
<logger name="com.atomikos.recovery.xa.XaResourceRecoveryManager" level="ERROR" />
<logger name="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator" level="DEBUG" />
<!-- <logger name="org.springframework.transaction.support.TransactionSynchronizationManager" level="TRACE" /> -->
<logger name="springfox.documentation.spring.web.readers.parameter.ParameterDataTypeReader" level="ERROR" />
<logger name="springfox.documentation.schema.property.CachingModelPropertiesProvider" level="ERROR" />
<!-- <logger name="io.swagger" level="DEBUG" /> -->
<!-- <logger name="springfox" level="DEBUG" /> -->
<logger name="org.flowable.ui.modeler.domain" level="DEBUG" />
<logger name="org.flowable.idm.engine.impl.persistence" level="DEBUG" />
<logger name="org.flowable.task.service.impl.persistence" level="DEBUG" />
<logger name="org.flowable.identitylink.service.impl.persistence" level="DEBUG" />
<logger name="org.flowable.variable.service.impl.persistence" level="DEBUG" />
<logger name="org.flowable.engine.impl.persistence" level="DEBUG" />
<logger name="com.jeesite" level="DEBUG" />
<logger name="com.jeesite.common.i18n" level="INFO" />
<logger name="com.jeesite.common.shiro" level="INFO" />
<logger name="com.jeesite.common.beetl" level="INFO" />
<logger name="com.jeesite.common.cache" level="INFO" />
<logger name="com.jeesite.common.j2cache" level="INFO" />
<logger name="com.jeesite.common.j2cache.cache.support.caffeine" level="ERROR" />
<logger name="com.jeesite.common.mybatis" level="INFO" />
<logger name="com.jeesite.common.mybatis.mapper" level="DEBUG" />
<logger name="com.jeesite.common.reflect.ReflectUtils" level="INFO" />
<logger name="com.jeesite.common.io.FileUtils" level="INFO" />
<logger name="com.jeesite.modules.sys.dao.LogDao" level="INFO" />
<!-- Production profile
<springProfile name="prod">
<logger name="org.mybatis.spring.transaction" level="INFO" />
<logger name="org.flowable.ui.modeler.domain" level="INFO" />
<logger name="org.flowable.idm.engine.impl.persistence" level="INFO" />
<logger name="org.flowable.task.service.impl.persistence" level="INFO" />
<logger name="org.flowable.identitylink.service.impl.persistence" level="INFO" />
<logger name="org.flowable.variable.service.impl.persistence" level="INFO" />
<logger name="org.flowable.engine.impl.persistence" level="INFO" />
<logger name="com.jeesite" level="INFO" />
<logger name="com.jeesite.common.mybatis.mapper" level="INFO" />
</springProfile> -->
</included>