java 11
版本,不再提供java 1.8
版本
java 1.8
版本,自行下载源码编译,project.properties
中修改为javaVersion=1.8
java 17
版本Acp | Spring Cloud | Spring Boot Alibaba | Spring Boot | JVM | New features | |
---|---|---|---|---|---|---|
LTS | 2022.0.4.x | 2022.0.4 | 2022.0.0.0 | 3.1.x | 17+ | 新增国密SM2/SM3/SM4 优化加解密工具类 |
2022.0.3.x | 2022.0.3 | 2022.0.0.0 | 3.1.x | 17+ | 调整工程结构 重写自定义异常处理 兼容WebFlux |
|
2022.0.2.x | 2022.0.2 | 2022.0.0.0-RC2 | 3.1.x | 17+ | xml支持 新增acp-spring-cloud-starter-resource-server |
|
2022.0.1.x | 2022.0.1 | 2022.0.0.0-RC1 | 3.0.x | 17+ | ||
2021.0.5.x | 2021.0.5 | 2021.0.4.x | 2.7.x | 1.8+ | ||
2021.0.4.x | 2021.0.4 | 2021.0.4.x | 2.7.x | 1.8+ | ||
2021.0.3.x | 2021.0.3 | 2021.0.1.x | 2.7.x | 1.8+ | ||
2021.0.2.x | 2021.0.2 | 2021.0.1.x | 2.6.x | 1.8+ | ||
2021.0.1.x | 2021.0.1 | 2021.0.1.x | 2.6.x | 1.8+ | ||
6.7.x | 2020.0.4 | 2.2.x.RELEASE | 2.5.x | 1.8+ | ||
6.6.x | 2020.0.3 | 2.2.x.RELEASE | 2.5.x | 1.8+ | ||
6.5.x | 2020.0.0~2020.0.2 | 2.2.x.RELEASE | 2.4.x | 1.8+ |
定义外部依赖版本号
全局自定义任务配置,适用于顶层项目
公共自定义任务配置,适用于所有项目模块
发布任务配置,适用于所有项目模块
定义项目/模块结构
gradle全局参数:
groupid.acp
公共构建脚本
单个模块特有的构建脚本
gradlew project:release -Pactive=test
mavenUploadUrlRelease=https://maven.com/repositories/releases/
mavenUploadUrlSnapshot=https://maven.com/repositories/snapshot/
mavenUserName=username
mavenPassword=password
mavenUploadUrlRelease=https://maven.com/repositories/releases/
mavenUploadUrlSnapshot=https://maven.com/repositories/snapshot/
mavenUserName=username
mavenPassword=password
signing.keyId=shortId
signing.password=keyPassword
signing.secretKeyRingFile=keyFile
gradlew wrapper --gradle-version=xxx --distribution-type=all
acp -------工程根目录,root模块
├─ acp-dependency -------dependency 模块
├─ doc -------文档
├─ gradle -------gradle脚本
├─ modules -------子模块路径
│ ├─ core -------核心模块
│ ├─ spring-boot -------spring boot 适配模块
│ └─ spring-cloud -------spring cloud 适配模块
└─ test -------测试模块根目录
├─ cloud -------spring cloud 测试模块
├─ testkotlin -------Kotlin 测试模块
└─ testspringboot -------spring boot 测试模块
引入 acp 下相应模块包,使用 acp-dependency 进行版本管理,例如:
dependencyManagement {
imports {
mavenBom("io.gitee.zhangbinhub.acp:acp-dependency:version")
}
}
springboot 应用扩展组件
依赖 acp-client
在 springboot 基础上整合大量底层功能,扩展支持 tcp、udp 等协议服务端配置;同时封装定时任务
提供一个 Spring Boot 的InfoContributor
,例如:
curl http://localhost:8080/actuator/info
{
"acp": {
"version": "version no"
}
}
boot:acp-spring-boot-starter
和boot:acp-spring-boot-starter-ftp
boot:acp-spring-boot-starter
boot:acp-spring-boot-starter
io.gitee.zhangbinhub.acp.boot.socket.base.SocketServerHandle
;自定义粘包拆包解码器Bean,继承io.netty.handler.codec.ByteToMessageDecoder
io.gitee.zhangbinhub.acp.boot.socket.base.SocketServerHandle
io.gitee.zhangbinhub.acp.core.ftp.user.UserFactory
@SpringBootApplication
class TestReactiveApplication
fun main(args: Array<String>) {
SpringApplication(TestReactiveApplication::class.java).apply {
this.webApplicationType = WebApplicationType.REACTIVE
this.run(*args)
}
}
io.gitee.zhangbinhub.acp.boot.exceptions.AcpWebExceptionHandler
identify
,用于判断指定的异常是否需要进行处理handle
,将异常信息进行转换getOrder
,设置异常处理类的调用顺序springdoc:
api-docs:
enabled: true
acp:
schedule:
cron:
task1: 0 0/1 * * * ?
key-value 形式(可配置多个),其中 task1 为任务的 beanName;0 0/1 * * * ? 为定时执行规则cron表达式。
acp:
controller-log:
enabled: true #是否开启controller日志输出,默认true
no-log-uri-regular:
- /oauth/.* #不进行日志输出的 url 正则表达式,可配置多个
acp:
tcp-server:
listeners:
- name: testSocket #监听服务名称
enabled: true #是否启用,默认false
keepAlive: false #是否为长连接,默认false;TCP服务有效
readerIdleTime: 10000 #读等待时间单位毫秒,默认10000;TCP服务有效
writerIdleTime: 0 #写等待时间单位毫秒,默认0;TCP服务有效
idleTime: 0 #连接进入空闲状态的等待时间单位毫秒,默认0;TCP服务有效
messageDecoder: "" #粘包拆包解码器类全限定名称,默认不设置;TCP服务有效
threadNumber: 100 #接收报文处理的最大线程数,为0或不设置则使用系统默认线程数;TCP服务有效
hex: false #接收报文是否是十六进制机器码,默认false
port: 9999 #监听端口号
handleBean: xx.testTcpHandle #报文接收处理类全限定名称
responsible: true #报文是否需要进行原路响应,默认true
charset: gbk #服务使用字符集,为空或不设置则系统默认字符集
acp:
udp-server:
listeners:
- name: testSocket #监听服务名称
enabled: true #是否启用,默认false
hex: false #接收报文是否是十六进制机器码,默认false
port: 9999 #监听端口号
handleBean: xx.testTcpHandle #报文接收处理类全限定名称
responsible: true #报文是否需要进行原路响应,默认true
charset: gbk
acp:
ftp-server:
listeners:
- name: "测试ftp服务器" #服务名车鞥
enabled: true #可空,是否启用,默认false
port: 221 #服务端口号
pwd-encrypt-mode: MD5 #可空,用户密码加密方式(支持MD5、SHA1、SHA256),默认MD5
login-failure-delay: 30 #可空,默认30
max-login-failures: 20 #可空,默认20
max-logins: 10 #可空,默认10
max-anonymous-logins: 20 #可空,默认20
max-threads: 10 #可空,默认10
default-home-directory: "abs:D:\\个人\\测试ftp" #默认根路径
anonymous-login-enabled: false #可空,是否允许匿名用户登录,默认false
anonymous-write-permission: false #可空,是否允许匿名用户写操作,默认false
user-factory-class: io.gitee.zhangbinhub.acp.test.application.test.TestUserFactory #用户工厂类
模块 | 配置项 | 数据类型 | 默认值 | 说明 |
---|---|---|---|---|
core | acp.core.deleteFileWaitTime | Long | 1200000 | 延迟删除文件等待时间(单位毫秒),默认:1200000 |
acp.core.absPathPrefix | String | abs: | 绝对路径前缀,默认:"abs:" | |
acp.core.userPathPrefix | String | user: | 用户路径前缀,默认:"user:" | |
acp.core.fontPath | String | files/resource/font | 字体文件夹路径,默认:"files/resource/font" | |
controller-log | acp.controller-log.enabled | Boolean | true | 是否启用,默认:true |
acp.controller-log.noLogUriRegular | List<String> | empty | 不进行日志记录的url正则表达式数组 | |
schedule | acp.schedule.cron | Map<String,String> | empty | cron表达式Map。key=Bean名称,value=cron表达式 |
tcp-server | acp.tcp-server.listeners | List<SocketListenerConfiguration> | empty | Socket TCP 监听列表 |
udp-server | acp.tcp-server.listeners | List<SocketListenerConfiguration> | empty | Socket UDP 监听列表 |
SocketListenerConfiguration; prefix:acp.tcp-server.listeners or acp.tcp-server.listeners | name | String | Default Socket Listener | 名称 |
threadNumber | Integer | 0 | 线程数 | |
enabled | Boolean | false | 是否启用 | |
keepAlive | Boolean | false | 是否长连接 | |
idletime | Long | 10000 | 空闲等待时间(单位毫秒) | |
port | Integer | 0 | 监听端口 | |
hex | Boolean | false | 是否16进制报文 | |
messageDecoder | String | 消息解码器Bean名称 | ||
handleBean | String | 消息处理Bean名称 | ||
responsible | Boolean | true | 是否需要响应 | |
charset | String | utf-8 | 字符编码 | |
ftp-server | acp.ftp-server.listeners | List<FtpListener> | empty | Ftp服务监听配置列表 |
FtpListener; prefix:acp.ftp-server.listeners | name | String | 服务名 | |
enabled | Boolean | false | 是否启用,默认false | |
port | Integer | 0 | 服务端口号 | |
anonymousLoginEnabled | Boolean | false | 可空,是否允许匿名用户登录,默认false | |
pwdEncryptMode | String | MD5 | 用户密码加密方式(支持MD5、SHA1、SHA256),默认MD5 | |
loginFailureDelay | Integer | 30 | ||
maxLoginFailures | Integer | 20 | ||
maxLogins | Integer | 10 | ||
maxAnonymousLogins | Integer | 20 | ||
maxThreads | Integer | 10 | ||
defaultHomeDirectory | String | 默认根路径 | ||
anonymousWritePermission | Boolean | false | 可空,是否允许匿名用户写操作,默认false | |
userFactoryClass | String | 用户工厂类名 |
命令 | 描述 |
---|---|
./server.sh | 查看可用参数 |
./server.sh status | 查看系统运行状态 |
./server.sh start | 启动应用 |
./server.sh stop | 停止应用 |
./server.sh restart | 重启应用 |
demo 位于 test/cloud 下,使用 acp-dependency 进行版本管理,例如:
dependencyManagement {
imports {
mavenBom("io.gitee.zhangbinhub.acp:acp-dependency:version")
}
}
原子服务公共模块:
资源服务自动配置模块:
监控界面
网关服务
统一认证服务:token 存储于 Redis,user 及 client 信息可扩展配置
url | 描述 |
---|---|
/oauth/authorize | 申请授权,basic认证保护 |
/oauth/token | 获取token的服务,url中没有client_id和client_secret的,走basic认证保护 |
/oauth/check_token | 资源服务器用来校验token,basic认证保护 |
/oauth/confirm_access | 授权确认,basic认证保护 |
/oauth/error | 认证失败,无认证保护 |
日志服务,使用 kafka 作为日志消息队列
原子服务,分别调用 hello 和 world
原子服务,分别调用 hello 和 world
原子服务
原子服务
a. 配置两个 appender(一个输出到本地文件,一个输出到logstash;单独配置的目的是为了将不同类型的日志写入不同名称的文件并在elasticsearch中创建不同的索引)
b. 之后再配置一个 logger (name属性为某个日志类型),包含之前配置的两个 appender
c. 强烈建议 logback-spring.xml 中配置的本地日志文件路径需与 yml 中的 logging.file.path 一致,方便统一管理
acp:
cloud:
log-server:
enabled: true #是否开启日志服务
acp:
cloud:
log-server:
client:
enabled: true #是否启用日志服务
log-type: ALL #当前服务的日志类型,默认ALL,也自定义;自定义的类型需要在日志服务中参照ALL配置appender和logger
acp:
cloud:
resource-server:
permit-all-path:
- /customer
security-path:
- /customer2
cloud:acp-spring-cloud-starter-resource-server
中强制开启了Http Basic
认证,保护/actuator
接口
acp.cloud.resource-server.client-id
和acp.cloud.resource-server.client-secret
配置项user.name
和user.password
上送给注册中心,以便监控系统能够正常访问/actuator
(例如Spring Boot Admin
)cloud:acp-spring-cloud-starter-resource-server
依赖改为cloud:acp-spring-cloud-starter
AcpCloudResourceServerApplication
改为AcpCloudAtomApplication
模块 | 配置项 | 数据类型 | 默认值 | 说明 |
---|---|---|---|---|
log server | acp.cloud.log-server.groupId | String | acp_cloud_log_server_group_id | 消费日志消息的组id,多个日志服务使用相同的组id,能够保证日志消息不被重复消费,默认:"acp_cloud_log_server_group_id" |
acp.cloud.log-server.enabled | Boolean | false | 当前服务是否是日志服务,默认:false | |
acp.cloud.log-server.destination | String | acp_cloud_log_server_message_topic | 日志消息的topic名称(队列名称),默认:"acp_cloud_log_server_message_topic" | |
acp.cloud.log-server.client.enabled | Boolean | enabled | 是否启用日志服务客户端,默认:false | |
acp.cloud.log-server.client.logType | String | ALL | 日志类型,默认:"ALL" | |
acp.cloud.resource-server.client-id | String | acp_cloud_resource_server_client_id | 资源服务认证使用的clientId | |
acp.cloud.resource-server.client-secret | String | acp_cloud_resource_server_client_secret | 资源服务认证使用的clientSecret | |
acp.cloud.resource-server.permit-all-path | List<String> | empty | 不进行权限校验的 url path | |
acp.cloud.resource-server.security-path | List<String> | empty | 进行权限保护的 url path |
Acp Test Cloud.postman_collection.json
buildImage
pushImage
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。