文章目录
需求
目前在开发中,使用的非本人搭建的项目架子,存在如下问题:
- 依赖无法统一管理。
- 一个模块中,分层领域模型混杂。
因而作者就重新搭建了一套架子,旨在解决依赖统一,分层领域模型等问题。
摘要
关键字:低耦合、nacos配置共享、 nacos配置中心、Maven依赖管理
1 模板描述
当前模板采用低耦合开发模式,主要关注与各业务主干。
- 在common模块,建议主要集成配置文件等通用模板。
- 在domain模块,建议主要集成实体类、VO、DTO等项目相关对象。
- 在service模块,建议主要集成业务方法,诸如:controller、service、mapper层等。
2 模板内容介绍
2.1 模块间依赖关系
2.2 模板目前集成
2.2.1 swagger+Knife4j
halo-common/src/main/java/com/ruimind/config/SwaggerConfig.java
在如上所示路径下配置swagger相关描述信息,详细可参考路径下文件。
- 问题一:你的swagger配置在另一个工程,为何会在其他工程中生效?
- 回答:当前您在common模块中配置的swagger,已被依赖至所需服务,springboot的Application文件加载的时候,会默认扫描Application文件所在包下所有文件,因而会自动加载您的配置。
- 问题二:为何有个必须token的设置?
- 回答:因为在实际开发中,访问接口时通常需要用户信息校验,解决方法是携带用户token,因而此处会配置token值为swagger必填选项,假如您不需要token也无妨,在swagger上发送请求时,token随意填写集合,假如:1。
2.2.1 nacos+SpringBoot+SpringCloudAlibaba
-
SpringBoot+SpringCloudAlibaba : 为通用配置此处不再赘述
-
nacos:当前项目模板,引入nacos共享配置概念,具体实践描述如下:
-
在nacos配置中心中,您可以将通用配置提取出成一个新的配置文件,这样做的好处:①解决了同样的配置被重复书写在不同项目的配置文件中;②便于配置的基础信息统一管理;③方便使用,在您使用时候只需要,在开发项目中引入共享配置即可。
-
共享配置示例:
nacos配置中心文件如下:
a、共享配置
# shared-spring-postgres.yml pg数据库共享配置 spring: datasource: url: ${jdbc.url} username: ${jdbc.username} password: ${jdbc.password} type: com.alibaba.druid.pool.DruidDataSource b、您需要用共享配置的项目配置
# YOUR-PROJECT.yml 您需要用共享配置的项目 jdbc.url: jdbc:postgresql://${postgres-host:XXXXX jdbc.username: ${postgres-uname:XXX} jdbc.password: ${postgres-pwd:XXX}
开发项目中引入共享配置,配置书写:
a: bootstrap.yaml配置文件
application: version: v1.0 logging: config: classpath:logback-spring.xml spring: application: name: halo-test-service profiles: active: dev mvc: pathmatch: #解决异常:swagger Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException #因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher matching-strategy: ant_path_matcher rs: swagger: package-path: com.ruimind.controller title: XXX接口文档 description: XXX业务。 version: ${application.version}
a: bootstrap.yaml配置文件
# bootstrap-dev.yaml server: port: 18084 tomcat: uri-encoding: UTF-8 threads: max: 1000 min-spare: 30 spring: cloud: nacos: server-addr:XXXX discovery: group: DEFAULT_GROUP namespace: XXXX config: namespace: XXXX prefix: ${spring.application.name} file-extension: yaml refresh-enabled: true group: DEFAULT_GROUP shared-configs: - data-id: shared-spring-postgres.yml group: SHARED_GROUP refresh: false - data-id: shared-spring-mybatis-plus.yml group: SHARED_GROUP refresh: false - data-id: shared-spring-jpa.yml group: SHARED_GROUP refresh: false
-
3 项目地址
https://gitee.com/jiao-xin1314/halo
4 FAQ
- 问题1:最外边那个大项目,Halo模块,是个啥问啥要那样设置?
- 此处设计主要借鉴了,Maven依赖管理的思想,通过在父工程指定依赖版本号,确保各个子模块使用同一版本的依赖,避免版本冲突和不一致的问题。在您具体使用中,第一步:您应该首先在父工程(即外边那个最大的工程)的pom文件中指定依赖及其版本号,第二步:当需要在其他模块引用时,只需要引入G、A地址即可,无需制定版本号。
- 问题2:拿到这个工程,我应如何使用?
- 第一步:配置您的Git信息至当前项目。
- 第二步:下载Maven依赖。
- 第三步:修改配置文件中,nacos配置信息为您的信息,并剔除无用的共享配置。
- ,第四步:测试启动,访问swagger:http://localhost:18084/doc.html,如出现Knife4j页面,项目初始化完成,开始你的开发吧。
- 问题3:项目报错,xxApplication类找不到。
- 首先,确保您的Maven配置无误。
- 其次:执行Maven声明周期,依次clean、compile。
- 最后:再启动,访问swagger:http://localhost:18084/doc.html,如出现Knife4j页面,项目初始化完成,开始你的开发吧。
- 问题4:我应该执行哪个工程的项目周期?
- 回答:执行带root的。