# acp **Repository Path**: zhangjie1/acp ## Basic Information - **Project Name**: acp - **Description**: Application Construction Platform 应用构建平台。该项目是用Kotlin和Java语言混编封装的脚手架。本人会密切关注业界最新动态,并使用最新技术持续更新优化。使用该脚手架可快速搭建基于Kotlin或Java语言的普通应用、SpringBoot应用和SpringCloud应用。 - **Primary Language**: Kotlin - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2023-10-12 - **Last Updated**: 2023-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Application Construction Platform (acp) [![Maven central](https://img.shields.io/maven-central/v/io.gitee.zhangbinhub.acp/acp-dependency.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:io.gitee.zhangbinhub.acp%20AND%20a:acp-dependency) [![Spring Boot](https://img.shields.io/badge/SpringBoot-3.1.x-brightgreen)](https://projects.spring.io/spring-boot) [![Spring Cloud](https://img.shields.io/badge/SpringCloud-2022.0.4-brightgreen)](https://projects.spring.io/spring-cloud) [![Spring Cloud Alibaba](https://img.shields.io/badge/SpringCloudAlibaba-2022.0.0.0-brightgreen)](https://github.com/alibaba/spring-cloud-alibaba) [![Kotlin](https://img.shields.io/badge/Kotlin->1.6-blue)](https://kotlinlang.org/) [![Jvm](https://img.shields.io/badge/Jvm->=17-blue)](http://hg.openjdk.java.net/) [![Gradle](https://img.shields.io/badge/Gradle->7.5-blue)](https://gradle.org/) [![License](http://img.shields.io/badge/license-Apache%202-brightgreen)](http://www.apache.org/licenses/LICENSE-2.0.html) [![Security Status](https://www.murphysec.com/platform3/v31/badge/1671344589553876992.svg)](https://www.murphysec.com/console/report/1671344587179900928/1671344589553876992) ###### v2022.0.4.5 [版本更新日志](doc/version_history.md) - Application Construction Platform 应用构建平台 - 该项目是用Kotlin和Java语言混编封装的脚手架。本人会密切关注业界最新动态,并使用最新技术持续更新优化。 - 使用该脚手架可快速搭建基于Kotlin或Java语言的普通应用、SpringBoot应用和SpringCloud应用。 - **v2021.0.1.0** 开始,版本号命名规范改变,前三位大版本号与所使用的SpringCloud版本号一致,第三位小版本号迭代更新,同时将发布至Maven Central - **v2021.0.4.3** 开始,仅支持```java 11```版本,不再提供```java 1.8```版本 - tips: 如需```java 1.8```版本,自行下载源码编译,```project.properties```中修改为```javaVersion=1.8``` - **v2022.0.0.0** 开始,最低要求```java 17```版本 ## 版本对应关系 | | Acp | [Spring Cloud](http://projects.spring.io/spring-cloud) | [Spring Boot Alibaba](https://github.com/alibaba/spring-cloud-alibaba) | [Spring Boot](https://projects.spring.io/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+ | | ## 技术栈 - joda-time - okhttp - netty - hibernate - jackson - poi - freemarker - flying-saucer-pdf-itext5 - knife4j - junit5 - spring-boot - spring-boot-starter-undertow - spring-boot-starter-actuator - spring-boot-starter-validation - spring-boot-starter-aop - spring-boot-starter-security - spring-boot-starter-data-jpa - spring-boot-starter-data-redis - spring-boot-starter-data-redis-reactive - spring-boot-starter-oauth2-resource-server - spring-boot-starter-oauth2-authorization-server - spring-boot-admin-server - spring-cloud-alibaba - spring-cloud-starter-alibaba-nacos-discovery - spring-cloud-starter-alibaba-nacos-config - spring-cloud-starter-alibaba-sentinel - sentinel-datasource-nacos - spring-cloud - spring-cloud-starter-stream-kafka - spring-cloud-stream-binder-kafka-streams - spring-cloud-starter-bus-kafka - spring-cloud-starter-openfeign - feign-okhttp - spring-cloud-starter-loadbalancer - spring-cloud-openfeign - spring-cloud-bus-kafka - spring-cloud-gateway ## 一、环境要求及开发语言 - java 17+ - gradle 7.5+ - kotlin 1.6+ ## 二、gradle 脚本配置及使用 ### (一)配置文件 ##### 1.[gradle/dependencies.gradle](gradle/dependencies.gradle) 定义外部依赖版本号 ##### 2.[gradle/globalTask.gradle](gradle/globalTask.gradle) 全局自定义任务配置,适用于顶层项目 ##### 3.[gradle/commonTask.gradle](gradle/commonTask.gradle) 公共自定义任务配置,适用于所有项目模块 ##### 4.[gradle/publish.gradle](gradle/publish.gradle) 发布任务配置,适用于所有项目模块 ##### 5.[settings.gradle](settings.gradle) 定义项目/模块结构 ##### 6.[project.properties](project.properties) gradle全局参数: - gradleVersion:gradle版本号 - group:对应打包时的最外层groupid,最终的groupid还会加上模块路径,例如`groupid.acp` - version:版本号 - encoding:编译字符集 - mavenCentralUrl:maven中央仓库地址 - javaVersion:jdk版本号 ##### 4.[build.gradle](build.gradle) 公共构建脚本 ##### 5.模块根路径/build.gradle 单个模块特有的构建脚本 ### (二)自定义任务 - 全局自定义任务 - publishAll 发布所有构建至maven中央仓库,linux系统适用 - publishToMavenLocalAll 发布所有构建至maven本地仓库,linux系统适用 - 公共自定义任务 - clearPj 清理所有输出文件 - release 编译、打包并输出 - 如需编译打包对应环境,命令中使用参数 active,例如 ``` gradlew project:release -Pactive=test ``` ### (三)发布至maven仓库 ##### 1、发布至本地仓库 - 执行 publishToMavenLocal 任务 - publishToMavenLocalAll ##### 2、发布至私服 - 项目根路径下创建 gradle.properties 并添加如下参数(参数值根据实际情况修改) ``` mavenUploadUrlRelease=https://maven.com/repositories/releases/ mavenUploadUrlSnapshot=https://maven.com/repositories/snapshot/ mavenUserName=username mavenPassword=password ``` - 执行 publish 任务 - publishAll ##### 3、发布至中央仓库 - 项目根路径下创建 gradle.properties 并添加如下参数(参数值根据实际情况修改) ``` 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 ``` - 执行 publish 任务 - publishAll ### (四)升级命令 `` 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 测试模块 ``` - api document url : /doc.html ## 四、开发 SpringBoot 应用 引入 acp 下相应模块包,使用 acp-dependency 进行版本管理,例如: ```groovy dependencyManagement { imports { mavenBom("io.gitee.zhangbinhub.acp:acp-dependency:version") } } ``` ### (一)模块说明,具体API文档请查看各模块 javadoc ##### 1. acp-core-common - 核心包 - 封装了常用工具类,包括jdbc、配置文件解析(xml、properties)、加解密算法、线程池、定时任务、四则运算、字符串处理 ##### 2. acp-core-packet - 通讯打解包组件 - 依赖 acp-core-common - 封装了http数据包、iso8583报文、xml报文的打解包操作 ##### 3. acp-core-client - 客户端组件包 - 依赖 acp-core-packet - 封装了http、https、tcp、udp的客户端 ##### 4. acp-core-ftp - 应用扩展组件 - 依赖 acp-core-common - 封装支持 ftp/sftp 服务端及客户端 ##### 5. acp-core-file - 文件处理组件包 - 依赖 acp-core-common - 封装了excel、pdf、word、html、freemarker模板文件的读写转换等操作 ##### 6. acp-spring-boot-starter - springboot 应用扩展组件 - 依赖 acp-client - 在 springboot 基础上整合大量底层功能,扩展支持 tcp、udp 等协议服务端配置;同时封装定时任务 - 提供一个 Spring Boot 的```InfoContributor```,例如: ```curl http://localhost:8080/actuator/info``` ```json { "acp": { "version": "version no" } } ``` ##### 7. acp-spring-boot-starter-ftp - springboot 应用扩展组件 - 依赖 acp-spring-boot-starter - 扩展支持 ftp、sftp 等协议服务端自动配置 - ##### 测试模块 ###### 1. test/testspringboot - 依赖```boot:acp-spring-boot-starter```和```boot:acp-spring-boot-starter-ftp``` - java语言开发demo - 提供简单的http、tcp、udp、ftp等开发demo - 提供spring data jpa多数据源demo ###### 2. test/testreactive - 依赖```boot:acp-spring-boot-starter``` - 基于webflux的demo ###### 3. test/testskotlin - 依赖```boot:acp-spring-boot-starter``` - kotlin语言开发demo ### (二)快速开发 springboot 应用 ##### 全局说明 - 统一注入 io.gitee.zhangbinhub.acp.boot.interfaces.LogAdapter 进行日志记录 ##### 1. 开发说明 - (1)参考 test/testspringboot - (2)依赖 acp-spring-boot-starter - (3)src/main/java/resources 中增加配置文件(测试配置文件在 src/test/resources)config 下的文件和 acp.properties 为选用 - (4)yml配置文件中增加数据源配置(单数据源或多数据源),数据库操作遵循 spring-data-jpa 标准,使用 hibernate 进行实例化 - (5)单数据源应用的话无需增加额外配置类,正常编写domain、repo、entity即可 - (6)多数据源应用需要增加对应每个数据源的 Jpa 配置类,并创建对应数据源的 repo、entity 包,之后再在对应包中编写 repo 和 entity - (7)定时任务参考 test/testspringboot 模块 io.gitee.zhangbinhub.acp.test.application.task.Task1,继承 io.gitee.zhangbinhub.acp.boot.base.BaseSpringBootScheduledTask 类,并在 yml 配置文件中增加对应执行规则 - (8)自定义系统初始化任务,新增任务类,继承 io.gitee.zhangbinhub.acp.boot.base.BaseInitialization 类 - (9)自定义可控制监听器,新增监听器类,实现 io.gitee.zhangbinhub.acp.boot.interfaces.Listener 接口 - (10)参考 test/testspringboot 模块,io.gitee.zhangbinhub.acp.test.application.test 包中有 tcp、udp 服务端开发demo,并在 application-dev.xml 中增加相应配置 - (11)如有需要,可选择引入 acp-file、acp-message、acp-spring-boot-starter-ftp 等包 - (12)开发TCP服务端:自定义报文处理Bean,继承`io.gitee.zhangbinhub.acp.boot.socket.base.SocketServerHandle` ;自定义粘包拆包解码器Bean,继承`io.netty.handler.codec.ByteToMessageDecoder` - (13)开发UDP服务端:自定义报文处理Bean,继承`io.gitee.zhangbinhub.acp.boot.socket.base.SocketServerHandle` - (14)开发FTP服务端:自定义用户工厂Bean,实现`io.gitee.zhangbinhub.acp.core.ftp.user.UserFactory` - (15)默认是基于servlet的MVC模式,如需开发基于webflux的应用,启动方法设置webApplicationType即可,参考 test/testreactive ```kotlin @SpringBootApplication class TestReactiveApplication fun main(args: Array) { SpringApplication(TestReactiveApplication::class.java).apply { this.webApplicationType = WebApplicationType.REACTIVE this.run(*args) } } ``` - (16)自定义web异常处理 - 自定义类实现接口`io.gitee.zhangbinhub.acp.boot.exceptions.AcpWebExceptionHandler` - 实现方法`identify`,用于判断指定的异常是否需要进行处理 - 实现方法`handle`,将异常信息进行转换 - 实现方法`getOrder`,设置异常处理类的调用顺序 - 自定义类注册为Bean ##### 2. 配置说明 - 定制开发的 api 接口,开启文档 ```yaml springdoc: api-docs: enabled: true ``` - 配置定时任务 ```yaml acp: schedule: cron: task1: 0 0/1 * * * ? ``` key-value 形式(可配置多个),其中 task1 为任务的 beanName;0 0/1 * * * ? 为定时执行规则cron表达式。 - 输出 controller 日志 ```yaml acp: controller-log: enabled: true #是否开启controller日志输出,默认true no-log-uri-regular: - /oauth/.* #不进行日志输出的 url 正则表达式,可配置多个 ``` - tcp 服务端 ```yaml 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 #服务使用字符集,为空或不设置则系统默认字符集 ``` - udp 服务端 ```yaml acp: udp-server: listeners: - name: testSocket #监听服务名称 enabled: true #是否启用,默认false hex: false #接收报文是否是十六进制机器码,默认false port: 9999 #监听端口号 handleBean: xx.testTcpHandle #报文接收处理类全限定名称 responsible: true #报文是否需要进行原路响应,默认true charset: gbk ``` - ftp 服务端 ```yaml 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 用户工厂类名
### (三)启停 springboot 应用 - [jvm 参考参数](doc/jvm-params.txt) - [启停脚本(Linux) server.sh](doc/script/server.sh),根据实际情况修改第2行 APP_NAME 和第3行 JVM_PARAM 的值即可,和 SpringBoot 应用的 .jar 放在同一路径下 - [启停脚本(windows) server.bat](doc/script/server.bat),根据实际情况修改第1行末尾需要执行的 jar 名称,和SpringBoot应用的 .jar 放在同一路径下 - Linux 命令: | 命令 | 描述 | |---------------------|----------| | ./server.sh | 查看可用参数 | | ./server.sh status | 查看系统运行状态 | | ./server.sh start | 启动应用 | | ./server.sh stop | 停止应用 | | ./server.sh restart | 重启应用 | ## 五、开发 SpringCloud 应用 demo 位于 test/cloud 下,使用 acp-dependency 进行版本管理,例如: ```groovy dependencyManagement { imports { mavenBom("io.gitee.zhangbinhub.acp:acp-dependency:version") } } ``` ### (一)模块说明 ##### 1. acp-spring-cloud-starter 原子服务公共模块: - (1)自定义程序入口注解 - (2)自定义 feign 并发策略、自定义 feign 请求拦截 - (3)封装日志服务客户端,发送日志消息至 kafka ##### 2. acp-spring-cloud-starter-resource-server 资源服务自动配置模块: - (1)自定义程序入口注解 - (2)自动配置资源服务安全策略 ##### 测试模块 ###### 1. test/cloud/admin-server 监控界面 ###### 2. test/cloud/gateway-server 网关服务 ###### 3. test/cloud/oauth-server 统一认证服务: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 | 认证失败,无认证保护 | [查看认证过程](doc/oauth认证.md) ###### 4. test/cloud/log-server 日志服务,使用 kafka 作为日志消息队列 ###### 5. test/cloud/helloworld 原子服务,分别调用 hello 和 world ###### 6. test/cloud/helloworld-reactive 原子服务,分别调用 hello 和 world ###### 7. test/cloud/hello 原子服务 ###### 8. test/cloud/world 原子服务 ### (二)基础中间件环境搭建 - 必要基础中间件包括:nacos、redis、redisinsight、zookeeper、kafka、kafka-eagle、zipkin - 可选基础中间件包括:elasticsearch、logstash、kibana - 参考对应的[docker-compose](test/cloud/docker)文件 ### (三)组件开发 ##### 全局说明 - 统一注入 io.gitee.zhangbinhub.acp.boot.interfaces.LogAdapter 进行日志记录 ##### 1. 可视化监控 - test/cloud/admin-server - (1)依赖 acp-spring-cloud-starter - (2)无需改动代码 - (3)修改 yml 配置即可 ##### 2. 网关服务 - test/cloud/gateway-server - (1)需自定义限流策略(需依赖 Redis) - (2)修改 yml 进行路由配置;若没有 Redis 请不要配置限流策略 ##### 3. 认证服务 - test/cloud/oauth-server - (1)依赖 - acp-spring-cloud-starter-resource-server - org.springframework.security:spring-security-oauth2-authorization-server - org.springframework.boot:spring-boot-starter-data-redis - (2)入口类增加注解 @AcpCloudAtomApplication - (3)基于 spring-security-oauth2-authorization-server 深度定制 grant_type=password 模式 ##### 4. 日志服务(依赖 kafka) - (1)依赖 acp-spring-cloud-starter-resource-server - (2)入口类增加注解 @AcpCloudResourceServerApplication - (3)如需自定义日志消息处理,新增Bean实现 io.gitee.zhangbinhub.acp.cloud.log.consumer.LogProcess 接口,并且增加 @Primary 注解 - (4)根据各服务配置的日志类型(默认为"ALL"),在 logback-spring.xml 中参照 ALL 和 ALL-LOGSTASH 进行配置 - a. 配置两个 appender(一个输出到本地文件,一个输出到logstash;单独配置的目的是为了将不同类型的日志写入不同名称的文件并在elasticsearch中创建不同的索引) - b. 之后再配置一个 logger (name属性为某个日志类型),包含之前配置的两个 appender - c. 强烈建议 logback-spring.xml 中配置的本地日志文件路径需与 yml 中的 logging.file.path 一致,方便统一管理 - (5)增加配置 ```yaml acp: cloud: log-server: enabled: true #是否开启日志服务 ``` ##### 5. 原子服务 - (1)依赖 acp-spring-cloud-starter-resource-server - (2)参考 四、开发 SpringBoot 应用 - (3)原子服务即 SpringBoot 应用,引入额外的 spring-cloud 包,并在 yml 中增加相应配置 - (4)参考 test/cloud/hello、test/cloud/world、test/cloud/helloworld,入口类增加注解 @AcpCloudResourceServerApplication - (5)进行日志服务配置 ```yaml acp: cloud: log-server: client: enabled: true #是否启用日志服务 log-type: ALL #当前服务的日志类型,默认ALL,也自定义;自定义的类型需要在日志服务中参照ALL配置appender和logger ``` - (6)如有特殊需要不进行认证的url(例如"/customer"),则增加permit-all-path配置;如有需要进行认证的url(例如" /customer2" ),则增加security-path配置 ```yaml acp: cloud: resource-server: permit-all-path: - /customer security-path: - /customer2 ``` - (7)`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`) - (8)如果原子服务不需要加入统一认证体系中,即不需要进行访问权限验证。 - ```cloud:acp-spring-cloud-starter-resource-server```依赖改为```cloud:acp-spring-cloud-starter``` - 入口类注解```AcpCloudResourceServerApplication```改为```AcpCloudAtomApplication``` ##### 6. 配置附录
模块配置项数据类型默认值说明
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
##### 7. postman 测试 [Acp Test Cloud.postman_collection.json](doc/Acp%20Test%20Cloud.postman_collection.json) ## 六、打包为 docker 镜像 - 打包:`buildImage` - 打包并上传:`pushImage` ## 七、[Sentinel 动态数据源配置](doc/sentinel.md)