开发通用模板设计

文章介绍了如何在一个项目中采用低耦合模式,通过Nacos进行配置共享,并整合Swagger+Knife4j进行API文档管理。还讨论了Maven依赖管理和在SpringBoot中使用Nacos配置中心的方法,以及如何解决常见问题和项目初始化步骤。
摘要由CSDN通过智能技术生成

需求

目前在开发中,使用的非本人搭建的项目架子,存在如下问题:

  • 依赖无法统一管理。
  • 一个模块中,分层领域模型混杂。
    因而作者就重新搭建了一套架子,旨在解决依赖统一,分层领域模型等问题。

摘要

关键字:低耦合、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的。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值