【JAVA】如何快速阅读一个基于maven构建的springboot项目
一、摘要
在JAVA项目开发过程中,现在比较流行的是springboot机构,特别是在后端开发的项目中,springboot应用的非常普遍。springboot很好将大型的、复杂的项目进行分解,以模块或者服务的表现形式组成项目。那么当我们接手一个陌生的springboot项目时,如何快速阅读项目的架构和功能组成呢。本文做简要介绍。
二、正文
阅读基于maven构建的springboot项目,我们首先,找到项目里的主pom文件。例如
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>cn.test</groupId><artifactId>test</artifactId><version>${revision}</version></parent><modelVersion>4.0.0</modelVersion><artifactId>test-server</artifactId><packaging>jar</packaging><name>${project.artifactId}</name><description>后端 Server 的主项目,通过引入需要 test-module-xxx 的依赖,从而实现提供 RESTful API 给 test-ui-admin、test-ui-user 等前端项目。本质上来说,它就是个空壳(容器)!</description><url>https://github.com/YunaiV/ruoyi-vue-pro</url><dependencies><dependency><groupId>cn.ctg</groupId><artifactId>test-module-system-biz</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-module-infra-biz</artifactId><version>${revision}</version></dependency><!-- 会员中心。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-member-biz</artifactId><version>${revision}</version></dependency><!-- 数据报表。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-report-biz</artifactId><version>${revision}</version></dependency><!-- 工作流。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-bpm-biz</artifactId><version>${revision}</version></dependency><!-- 支付服务。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-pay-biz</artifactId><version>${revision}</version></dependency><!-- 微信公众号模块。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-mp-biz</artifactId><version>${revision}</version></dependency><!-- 商城相关模块。默认注释,保证编译速度--><dependency><groupId>cn.ctg</groupId><artifactId>test-module-promotion-biz</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-module-product-biz</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-module-trade-biz</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-module-statistics-biz</artifactId><version>${revision}</version></dependency><!-- CRM 相关模块。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-crm-biz</artifactId><version>${revision}</version></dependency><!-- ERP 相关模块。默认注释,保证编译速度 --><dependency><groupId>cn.ctg</groupId><artifactId>test-module-erp-biz</artifactId><version>${revision}</version></dependency><!-- AI 大模型相关模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.ctg</groupId>-->
<!-- <artifactId>test-module-ai-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>--><!-- IoT 物联网相关模块。默认注释,保证编译速度 -->
<!-- <dependency>-->
<!-- <groupId>cn.ctg</groupId>-->
<!-- <artifactId>test-module-iot-biz</artifactId>-->
<!-- <version>${revision}</version>-->
<!-- </dependency>--><!-- spring boot 配置所需依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!-- 服务保障相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-protection</artifactId></dependency></dependencies><build><!-- 设置构建的 jar 包名 --><finalName>${project.artifactId}</finalName><plugins><!-- 打包 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring.boot.version}</version><executions><execution><goals><goal>repackage</goal> <!-- 将引入的 jar 打入其中 --></goals></execution></executions></plugin></plugins></build></project>
后端 Server 的主项目,通过引入需要 test-module-xxx 的依赖,
从而实现提供 RESTful API 给 test-ui-admin、test-ui-user 等前端项目。
本质上来说,它就是个空壳(容器)!
这一句很好介绍了项目的组件
第二步,我们查看springboot依赖的第三方库和组件,看看都有哪些功能,这是第二步需要看的pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.test</groupId><artifactId>test-dependencies</artifactId><version>${revision}</version><packaging>pom</packaging><name>${project.artifactId}</name><description>基础 bom 文件,管理整个项目的依赖版本</description><url>https://github.com/YunaiV/ruoyi-vue-pro</url><properties><revision>2.4.2-SNAPSHOT</revision><flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version><!-- 统一依赖管理 --><spring.boot.version>3.4.1</spring.boot.version><!-- Web 相关 --><springdoc.version>2.7.0</springdoc.version><knife4j.version>4.6.0</knife4j.version><!-- DB 相关 --><druid.version>1.2.24</druid.version><mybatis.version>3.5.17</mybatis.version><mybatis-plus.version>3.5.9</mybatis-plus.version><dynamic-datasource.version>4.3.1</dynamic-datasource.version><mybatis-plus-join.version>1.4.13</mybatis-plus-join.version><easy-trans.version>3.0.6</easy-trans.version><redisson.version>3.41.0</redisson.version><dm8.jdbc.version>8.1.3.140</dm8.jdbc.version><kingbase.jdbc.version>8.6.0</kingbase.jdbc.version><opengauss.jdbc.version>5.1.0</opengauss.jdbc.version><taos.version>3.3.3</taos.version><!-- 消息队列 --><rocketmq-spring.version>2.3.2</rocketmq-spring.version><!-- 服务保障相关 --><lock4j.version>2.2.7</lock4j.version><!-- 监控相关 --><skywalking.version>9.0.0</skywalking.version><spring-boot-admin.version>3.4.1</spring-boot-admin.version><opentracing.version>0.33.0</opentracing.version><!-- Test 测试相关 --><podam.version>8.0.2.RELEASE</podam.version><jedis-mock.version>1.1.8</jedis-mock.version><mockito-inline.version>5.2.0</mockito-inline.version><!-- Bpm 工作流相关 --><flowable.version>7.0.1</flowable.version><!-- 工具类相关 --><captcha-plus.version>2.0.3</captcha-plus.version><jsoup.version>1.18.3</jsoup.version><lombok.version>1.18.36</lombok.version><mapstruct.version>1.6.3</mapstruct.version><hutool-5.version>5.8.35</hutool-5.version><hutool-6.version>6.0.0-M19</hutool-6.version><easyexcel.version>4.0.3</easyexcel.version><velocity.version>2.4.1</velocity.version><fastjson.version>1.2.83</fastjson.version><guava.version>33.4.0-jre</guava.version><transmittable-thread-local.version>2.14.5</transmittable-thread-local.version><commons-net.version>3.11.1</commons-net.version><jsch.version>0.1.55</jsch.version><tika-core.version>3.1.0</tika-core.version><ip2region.version>2.7.0</ip2region.version><bizlog-sdk.version>3.0.6</bizlog-sdk.version><netty.version>4.1.116.Final</netty.version><mqtt.version>1.2.5</mqtt.version><pf4j-spring.version>0.9.0</pf4j-spring.version><vertx.version>4.5.13</vertx.version><!-- 三方云服务相关 --><commons-io.version>2.17.0</commons-io.version><commons-compress.version>1.27.1</commons-compress.version><aws-java-sdk-s3.version>1.12.777</aws-java-sdk-s3.version><justauth.version>2.0.5</justauth.version><jimureport.version>1.8.1</jimureport.version><weixin-java.version>4.7.2.B</weixin-java.version></properties><dependencyManagement><dependencies><!-- 统一依赖管理 --><dependency><groupId>io.netty</groupId><artifactId>netty-bom</artifactId><version>${netty.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- 业务组件 --><dependency><groupId>io.github.mouzt</groupId><artifactId>bizlog-sdk</artifactId><version>${bizlog-sdk.version}</version><exclusions><exclusion> <!-- 排除掉springboot依赖使用项目的 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></exclusion></exclusions></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-biz-tenant</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-biz-data-permission</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-biz-ip</artifactId><version>${revision}</version></dependency><!-- Spring 核心 --><dependency><!-- 用于生成自定义的 Spring @ConfigurationProperties 配置类的说明文件 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>${spring.boot.version}</version></dependency><!-- Web 相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-web</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-security</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-websocket</artifactId><version>${revision}</version></dependency><dependency><groupId>com.github.xingfudeshi</groupId> <!-- TODO 芋艿:https://github.com/xiaoymin/knife4j/issues/874 --><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-api</artifactId><version>${springdoc.version}</version></dependency><!-- DB 相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-mybatis</artifactId><version>${revision}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>${druid.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-jsqlparser</artifactId><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId> <!-- 代码生成器,使用它解析表结构 --><version>${mybatis-plus.version}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <!-- 多数据源 --><version>${dynamic-datasource.version}</version></dependency><dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 --><version>${mybatis-plus-join.version}</version></dependency><dependency><groupId>com.fhs-opensource</groupId> <!-- VO 数据翻译 --><artifactId>easy-trans-spring-boot-starter</artifactId><version>${easy-trans.version}</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-context</artifactId></exclusion><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.fhs-opensource</groupId><artifactId>easy-trans-mybatis-plus-extend</artifactId><version>${easy-trans.version}</version></dependency><dependency><groupId>com.fhs-opensource</groupId><artifactId>easy-trans-anno</artifactId><version>${easy-trans.version}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-redis</artifactId><version>${revision}</version></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>${redisson.version}</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>${dm8.jdbc.version}</version></dependency><dependency><groupId>org.opengauss</groupId><artifactId>opengauss-jdbc</artifactId><version>${opengauss.jdbc.version}</version></dependency><dependency><groupId>cn.com.kingbase</groupId><artifactId>kingbase8</artifactId><version>${kingbase.jdbc.version}</version></dependency><dependency><groupId>com.taosdata.jdbc</groupId><artifactId>taos-jdbcdriver</artifactId><version>${taos.version}</version></dependency><!-- Job 定时任务相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-job</artifactId><version>${revision}</version></dependency><!-- 消息队列相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-mq</artifactId><version>${revision}</version></dependency><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>${rocketmq-spring.version}</version></dependency><!-- 服务保障相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-protection</artifactId><version>${revision}</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>lock4j-redisson-spring-boot-starter</artifactId><version>${lock4j.version}</version><exclusions><exclusion><artifactId>redisson-spring-boot-starter</artifactId><groupId>org.redisson</groupId></exclusion></exclusions></dependency><!-- 监控相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-monitor</artifactId><version>${revision}</version></dependency><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>${skywalking.version}</version></dependency><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>${skywalking.version}</version></dependency><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-opentracing</artifactId><version>${skywalking.version}</version><!-- <exclusions>--><!-- <exclusion>--><!-- <artifactId>opentracing-api</artifactId>--><!-- <groupId>io.opentracing</groupId>--><!-- </exclusion>--><!-- <exclusion>--><!-- <artifactId>opentracing-util</artifactId>--><!-- <groupId>io.opentracing</groupId>--><!-- </exclusion>--><!-- </exclusions>--></dependency><dependency><groupId>io.opentracing</groupId><artifactId>opentracing-api</artifactId><version>${opentracing.version}</version></dependency><dependency><groupId>io.opentracing</groupId><artifactId>opentracing-util</artifactId><version>${opentracing.version}</version></dependency><dependency><groupId>io.opentracing</groupId><artifactId>opentracing-noop</artifactId><version>${opentracing.version}</version></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId> <!-- 实现 Spring Boot Admin Server 服务端 --><version>${spring-boot-admin.version}</version><exclusions><exclusion><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-server-cloud</artifactId></exclusion></exclusions></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId> <!-- 实现 Spring Boot Admin Server 服务端 --><version>${spring-boot-admin.version}</version></dependency><!-- Test 测试相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-test</artifactId><version>${revision}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-inline</artifactId><version>${mockito-inline.version}</version> <!-- 支持 Mockito 的 final 类与 static 方法的 mock --></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>${spring.boot.version}</version><exclusions><exclusion><artifactId>asm</artifactId><groupId>org.ow2.asm</groupId></exclusion><exclusion><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 --><artifactId>jedis-mock</artifactId><version>${jedis-mock.version}</version></dependency><dependency><groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 --><artifactId>podam</artifactId><version>${podam.version}</version></dependency><!-- 工作流相关 --><dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter-process</artifactId><version>${flowable.version}</version></dependency><dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter-actuator</artifactId><version>${flowable.version}</version></dependency><!-- 工作流相关结束 --><!-- 工具类相关 --><dependency><groupId>cn.ctg</groupId><artifactId>test-common</artifactId><version>${revision}</version></dependency><dependency><groupId>cn.ctg</groupId><artifactId>test-spring-boot-starter-excel</artifactId><version>${revision}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId> <!-- use mapstruct-jdk8 for Java 8 or higher --><version>${mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-jdk8</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>${mapstruct.version}</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool-5.version}</version></dependency><dependency><groupId>org.dromara.hutool</groupId><artifactId>hutool-extra</artifactId><version>${hutool-6.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>${commons-compress.version}</version></dependency><dependency><groupId>org.apache.tika</groupId><artifactId>tika-core</artifactId> <!-- 文件类型的识别 --><version>${tika-core.version}</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>${velocity.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId> <!-- 解决 ThreadLocal 父子线程的传值问题 --><version>${transmittable-thread-local.version}</version></dependency><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId> <!-- 解决 ftp 连接 --><version>${commons-net.version}</version></dependency><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId> <!-- 解决 sftp 连接 --><version>${jsch.version}</version></dependency><dependency><groupId>com.xingyuv</groupId><artifactId>spring-boot-starter-captcha-plus</artifactId><version>${captcha-plus.version}</version></dependency><dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>${ip2region.version}</version></dependency><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>${jsoup.version}</version></dependency><!-- 三方云服务相关 --><dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>${aws-java-sdk-s3.version}</version></dependency><dependency><groupId>com.xingyuv</groupId><artifactId>spring-boot-starter-justauth</artifactId> <!-- 社交登陆(例如说,个人微信、企业微信等等) --><version>${justauth.version}</version><exclusions><exclusion><groupId>cn.hutool</groupId><artifactId>hutool-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-pay</artifactId><version>${weixin-java.version}</version></dependency><dependency><groupId>com.github.binarywang</groupId><artifactId>wx-java-mp-spring-boot-starter</artifactId><version>${weixin-java.version}</version></dependency><dependency><groupId>com.github.binarywang</groupId><artifactId>wx-java-miniapp-spring-boot-starter</artifactId><version>${weixin-java.version}</version></dependency><!-- 积木报表--><dependency><groupId>org.jeecgframework.jimureport</groupId><artifactId>jimureport-spring-boot3-starter-fastjson2</artifactId><version>${jimureport.version}</version><exclusions><exclusion><groupId>com.alibaba</groupId><artifactId>druid</artifactId></exclusion></exclusions></dependency><!-- PF4J --><dependency><groupId>org.pf4j</groupId><artifactId>pf4j-spring</artifactId><version>${pf4j-spring.version}</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><!-- Vert.x --><dependency><groupId>io.vertx</groupId><artifactId>vertx-core</artifactId><version>${vertx.version}</version></dependency><dependency><groupId>io.vertx</groupId><artifactId>vertx-web</artifactId><version>${vertx.version}</version></dependency><dependency><groupId>io.vertx</groupId><artifactId>vertx-mqtt</artifactId><version>${vertx.version}</version></dependency><!-- MQTT --><dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>${mqtt.version}</version></dependency></dependencies></dependencyManagement><build><plugins><!-- 统一 revision 版本 --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>${flatten-maven-plugin.version}</version><configuration><flattenMode>bom</flattenMode><updatePomFile>true</updatePomFile></configuration><executions><execution><goals><goal>flatten</goal></goals><id>flatten</id><phase>process-resources</phase></execution><execution><goals><goal>clean</goal></goals><id>flatten.clean</id><phase>clean</phase></execution></executions></plugin></plugins></build></project>
特别是通过版本信息,我们就知道项目中使用了哪些组件
<revision>2.4.2-SNAPSHOT</revision> <flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version> <!-- 统一依赖管理 --> <spring.boot.version>3.4.1</spring.boot.version> <!-- Web 相关 --> <springdoc.version>2.7.0</springdoc.version> <knife4j.version>4.6.0</knife4j.version> <!-- DB 相关 --> <druid.version>1.2.24</druid.version> <mybatis.version>3.5.17</mybatis.version> <mybatis-plus.version>3.5.9</mybatis-plus.version> <dynamic-datasource.version>4.3.1</dynamic-datasource.version> <mybatis-plus-join.version>1.4.13</mybatis-plus-join.version> <easy-trans.version>3.0.6</easy-trans.version> <redisson.version>3.41.0</redisson.version> <dm8.jdbc.version>8.1.3.140</dm8.jdbc.version> <kingbase.jdbc.version>8.6.0</kingbase.jdbc.version> <opengauss.jdbc.version>5.1.0</opengauss.jdbc.version> <taos.version>3.3.3</taos.version> <!-- 消息队列 --> <rocketmq-spring.version>2.3.2</rocketmq-spring.version> <!-- 服务保障相关 --> <lock4j.version>2.2.7</lock4j.version> <!-- 监控相关 --> <skywalking.version>9.0.0</skywalking.version> <spring-boot-admin.version>3.4.1</spring-boot-admin.version> <opentracing.version>0.33.0</opentracing.version> <!-- Test 测试相关 --> <podam.version>8.0.2.RELEASE</podam.version> <jedis-mock.version>1.1.8</jedis-mock.version> <mockito-inline.version>5.2.0</mockito-inline.version> <!-- Bpm 工作流相关 --> <flowable.version>7.0.1</flowable.version> <!-- 工具类相关 --> <captcha-plus.version>2.0.3</captcha-plus.version> <jsoup.version>1.18.3</jsoup.version> <lombok.version>1.18.36</lombok.version> <mapstruct.version>1.6.3</mapstruct.version> <hutool-5.version>5.8.35</hutool-5.version> <hutool-6.version>6.0.0-M19</hutool-6.version> <easyexcel.version>4.0.3</easyexcel.version> <velocity.version>2.4.1</velocity.version> <fastjson.version>1.2.83</fastjson.version> <guava.version>33.4.0-jre</guava.version> <transmittable-thread-local.version>2.14.5</transmittable-thread-local.version> <commons-net.version>3.11.1</commons-net.version> <jsch.version>0.1.55</jsch.version> <tika-core.version>3.1.0</tika-core.version> <ip2region.version>2.7.0</ip2region.version> <bizlog-sdk.version>3.0.6</bizlog-sdk.version> <netty.version>4.1.116.Final</netty.version> <mqtt.version>1.2.5</mqtt.version> <pf4j-spring.version>0.9.0</pf4j-spring.version> <vertx.version>4.5.13</vertx.version> <!-- 三方云服务相关 --> <commons-io.version>2.17.0</commons-io.version> <commons-compress.version>1.27.1</commons-compress.version> <aws-java-sdk-s3.version>1.12.777</aws-java-sdk-s3.version> <justauth.version>2.0.5</justauth.version> <jimureport.version>1.8.1</jimureport.version> <weixin-java.version>4.7.2.B</weixin-java.version>
比如数据库,消息队列,监控,认证,数据库连接池,工具类,日志类等等组件。
第三步,看spring的yml配置文件,看看都配置了什么
比如数据库的链接,redis的连接,定时任务的配置,日志输出的配置等相关内容
第四步、找到项目的启动类,如:
package cn.test.zlt.server;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 项目的启动类** 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章* 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章* 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章** @author 芋道源码*/
@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${zlt.info.base-package}
@SpringBootApplication(scanBasePackages = {"${zlt.info.base-package}.server", "${zlt.info.base-package}.module"})
public class ZltServerApplication {public static void main(String[] args) {// 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章// 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章// 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章SpringApplication.run(ZltServerApplication.class, args);
// new SpringApplicationBuilder(ZltServerApplication.class)
// .applicationStartup(new BufferingApplicationStartup(20480))
// .run(args);// 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章// 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章// 如果你碰到启动的问题,请认真阅读 https://doc.iocoder.cn/quick-start/ 文章}}
第五步,展开项目的层级结构,看看controller,service, serviceImpl,dao,mapper这些都是怎么写的。
最后启动启动项目,测试接口,查看数据库表。
相关文章:
【JAVA】如何快速阅读一个基于maven构建的springboot项目
一、摘要 在JAVA项目开发过程中,现在比较流行的是springboot机构,特别是在后端开发的项目中,springboot应用的非常普遍。springboot很好将大型的、复杂的项目进行分解,以模块或者服务的表现形式组成项目。那么当我们接手一个陌生的…...
Fedora升级Google Chrome出现GPG check FAILED问题解决办法
https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公钥(0x7FAC5991)已安装 https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公钥(0xD38B4796)已安装 仓库 "google-chrome" 的 GPG 公钥已安装,但是不适用于此软件包。 请检查此仓库的…...
深入解析MapReduce:大数据处理的经典范式
引言 在大数据时代,如何高效处理海量数据成为技术核心挑战之一。Hadoop生态中的MapReduce框架应运而生,以其“分而治之”的思想解决了大规模数据的并行计算问题。本文将从原理、核心组件到实战案例,带你全面理解这一经典计算模型。 一、MapR…...
JVM性能调优的基础知识 | JVM内部优化与运行时优化
目录 JVM内部的优化逻辑 JVM的执行引擎 解释执行器 即时编译器 JVM采用哪种方式? 即时编译器类型 JVM的分层编译5大级别: 分层编译级别: 热点代码: 如何找到热点代码? java两大计数器: OSR 编译…...
云计算-容器云-部署jumpserver 版本2
应用部署:堡垒机部署 # 使用提供的软件包配置Yum源,通过地址将jumpserver.tar.gz软件包下载至Jumpserver节点的/root目录下 [rootjumpserver ~]# tar -zxvf jumpserver.tar.gz -C /opt/ [rootjumpserver ~]# cp /opt/local.repo /etc/yum.repos.d/ [roo…...
MSP430G2553驱动0.96英寸OLED(硬件iic)
1.前言 最近需要用MSP430单片机做一个大作业,需要用到OLED模块,在这里记录一下 本篇文章主要讲解MSP430硬件iic的配置和OLED函数的调用,不会详细讲解OLED显示原理(其实就是江科大的OLED模块如何移植到msp430上).OLED显示原理以及底层函数讲解请参考其他…...
同质化的旅游内核
湘西凤凰古城、北京非常有文艺氛围的方家胡同都在被改造翻新为现代的其他城市范式式的样式。 什么意思呢?很多古城的老房子,从外面看,很古老、很漂亮,但是进去以后,完全不是那么回事,整座房子已经被完全掏…...
2025年五一数学建模A题【支路车流量推测】原创论文讲解(含完整python代码)
大家好呀,从发布赛题一直到现在,总算完成了2025年五一数学建模A题【支路车流量推测】完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 A题论文共104页&a…...
文章六:《循环神经网络(RNN)与自然语言处理》
文章6:循环神经网络(RNN)与自然语言处理——让AI学会"说人话" 引言:你的手机为什么能秒懂你? 当你说"我想看科幻片"时,AI助手能立刻推荐《星际穿越》,这背后是RNN在"…...
Redis总结及设置营业状态案例
Redis简介: rRedis服务开启与停止: 服务开启: 在Redis配置文件中输入cmd进入命令行输入redis-server redis-cli.exe -h -p:连接到redis服务 设置密码:在redis.windows.conf中找到requirepass 密码 服务停止: 在服务开启的界面按ctrlc Redis数据类…...
中科大:LLM几何推理数据生成
📖标题:Enhancing the Geometric Problem-Solving Ability of Multimodal LLMs via Symbolic-Neural Integration 🌐来源:arXiv, 2504.12773 🌟摘要 🔸多模态大语言模型(MLLM)的最…...
AimRT从入门到精通 - 04RPC客户端和服务器
一、ROS中的service通信机制 服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。也即:一个节点A向另一个节点B发送请求,B接收处理请求并产生响应结果返回给A。比如如下场景: 机器…...
【Android】Intent
目录 一、什么是Intent 二、显式Intent 三、隐式Intent 四、复杂数据传递 五、跨应用权限管理 六、常见问题 一、什么是Intent 1. 跨组件通信桥梁 实现组件间通信(Activity/Service/BroadcastReceiver)封装操作指令与数据传输逻辑 目标组件启动…...
从0开始建立Github个人博客(hugoPaperMod)
从0开始建立Github个人博客(hugo&PaperMod) github提供给每个用户一个网址,用户可以建立自己的静态网站。 一、Hugo hugo是一个快速搭建网站的工具,由go语言编写。 1.安装hugo 到hugo的github标签页Tags gohugoio/hugo选择一个版本,…...
Python集合全解析:从基础到高阶应用实战
一、集合核心特性与创建方法 1.1 集合的本质特征 Python集合(Set)是一种无序且元素唯一的容器类型,基于哈希表实现,具有以下核心特性: 唯一性:自动过滤重复元素无序性ÿ…...
Matlab自学笔记
一、我下载的是Matlab R2016a软件,打开界面如下: 二、如何调整字体大小,路径为:“主页”->“预设”->“字体”。 三、命令行窗口是直接进行交互式的,如下输入“3 5”,回车,就得到结果“…...
Python爬虫实战:获取好大夫在线各专业全国医院排行榜数据并分析,为患者就医做参考
一、引言 在当今医疗资源丰富但分布不均的背景下,患者在选择合适的心血管内科医院时面临诸多困难。好大夫在线提供的医院排行榜数据包含了医院排名、线上服务得分、患者评价得分等重要信息,对患者选择医院具有重要的参考价值。本研究通过爬取该排行榜数据,并进行深入分析,…...
多模态人工智能研究:视觉语言模型的过去、现在与未来
多模态人工智能研究:视觉语言模型的过去、现在与未来 1. 引言:定义多模态图景 多模态人工智能指的是旨在处理和整合来自多种数据类型或“模态”信息的人工智能系统,这些模态包括文本、图像、音频和视频等。与通常侧重于单一模态(…...
DeepSeek+Excel:解锁办公效率新高度
目录 一、引言:Excel 遇上 DeepSeek二、认识 DeepSeek:大模型中的得力助手2.1 DeepSeek 的技术架构与原理2.2 DeepSeek 在办公场景中的独特优势 三、DeepSeek 与 Excel 结合的准备工作3.1 获取 DeepSeek API Key3.2 配置 Excel 环境 四、DeepSeekExcel 实…...
3033. 修改矩阵
题目来源: leetcode题目:3033. 修改矩阵 - 力扣(LeetCode) 解题思路: 获取每列的最大值后将-1替换即可。 解题代码: #python3 class Solution:def getMaxRow(matrix:List[List[int]])->List[int]:r…...
Android面试总结之jet pack模块化组件篇
一、ViewModel 深入问题 1. ViewModel 如何实现跨 Fragment 共享数据?其作用域是基于 Activity 还是 Fragment? 问题解析: ViewModel 的作用域由 ViewModelStoreOwner 决定。当 Activity 和其内部 Fragment 共享同一个 ViewModelStoreOwner…...
【无需docker】mac本地部署dify
环境安装准备 #安装 postgresql13 brew install postgresql13 #使用zsh的在全局添加postgresql命令集 echo export PATH"/usr/local/opt/postgresql13/bin:$PATH" >> ~/.zshrc # 使得zsh的配置修改生效 source ~/.zshrc # 启动postgresql brew services star…...
清洗数据集
将label在图片上画出来 按照第一行的属性分类 import os import cv2 import multiprocessing as mp from tqdm import tqdm# ---------- 路径配置 ---------- # IMAGE_DIR = r"C:\Users\31919\Desktop\datasets\13k_100drive_raw_with_hand\images\test" LABEL_DIR =…...
支持向量机(SVM)详解
引言 支持向量机(Support Vector Machine, SVM)是一种强大的监督学习算法,主要用于分类和回归任务。其核心思想是找到一个最优的决策边界(超平面),最大化不同类别之间的间隔(Margin)…...
MIT XV6 - 1.2 Lab: Xv6 and Unix utilities - pingpong
接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么?做什么? pingpong 不务正业了那么久(然而并没有,虽然还在探索sleep,但是教材我已经看完了前三章了),让我们赶紧继续下去 在进行本实验之前请务…...
“淘宝闪购”提前4天全量,意味着什么?
4月30日推出,首日上线50个城市,既定5月6日推广至全国的“淘宝闪购”,突然在5月2日早上官宣,提前4天面向全国消费者全量开放。 这一系列节奏,剑指一个字“快”! 是业务发展远超预期的“快”。 4月30日&am…...
Servlet 解决了什么问题?
Servlet 主要解决了以下几个核心问题: 性能问题 (Performance): CGI 的问题: 传统的 CGI 技术为每个Web 请求都启动一个新的进程。进程的创建和销毁涉及大量的系统资源开销(内存分配、CPU 时间、进程上下文切换等)。在高并发场景下…...
Cherry Studio的MCP协议集成与应用实践:从本地工具到云端服务的智能交互
Cherry Studio的MCP协议集成与应用实践:从本地工具到云端服务的智能交互 一、MCP协议与Cherry Studio的技术融合 MCP(Model Context Protocol) 是由Anthropic提出的标准化协议,旨在为AI模型提供与外部工具交互的通用接口。通过M…...
CPU:AMD的线程撕裂者(Threadripper)系列
AMD的线程撕裂者(Threadripper)系列是AMD面向高性能计算(HPC)、工作站(Workstation)和高端桌面(HEDT)市场推出的顶级处理器产品线。该系列以极高的核心数、强大的多线程性能、丰富的…...
(即插即用模块-Attention部分) 六十二、(2022) LKA 大核注意力
文章目录 1、Larger Kernel Attention2、代码实现 paper:Visual Attention Network Code:https://github.com/Visual-Attention-Network 1、Larger Kernel Attention 自注意力机制在 NLP 领域取得了巨大成功,但其应用于计算机视觉任务时存在…...
Spring 分批处理 + 冷热数据分离:历史订单高效迁移与数据清理实战
在实际业务中,随着时间推移,订单量持续增长,若未及时进行数据治理,会造成数据库膨胀、查询缓慢、性能下降等问题。为了实现数据分层管理和系统高性能运行,我们在项目中采用了“冷热数据分离 分批迁移 数据清理”的综…...
Mybatis中的一级二级缓存扫盲
思维导图: MyBatis 提供了一级缓存和二级缓存机制,用于提高数据库查询的性能,减少对数据库的访问次数。(本质上是减少IO次数)。 一级缓存 1. 概念 一级缓存也称为会话缓存,它是基于 SqlSession 的缓存。在同…...
Elasticsearch 常用的 API 接口
文档类 API Index API :创建并建立索引,向指定索引添加文档。例如:PUT /twitter/tweet/1 ,添加一个文档。 Get API :获取文档,通过索引、类型和 ID 获取文档。如GET /twitter/tweet/1。 DELETE API &…...
纯前端专业PDF在线浏览器查看器工具
纯前端专业PDF在线浏览器查看器工具 工具简介 我们最新开发的PDF在线浏览器工具现已发布!这是一个基于Web的轻量级PDF阅读器,无需安装任何软件,直接在浏览器中即可查看和操作PDF文档。 主要功能 ✅ PDF文件浏览 支持本地PDF文件上传流畅的…...
传奇各职业/战士/法师/道士手套/手镯/护腕/神秘腰带爆率及出处产出地/圣战/法神/天尊/祈祷/虹魔/魔血
护腕排行(战士): 名字攻击攻击(均)魔法魔法(均)道术道术(均)防御防御(均)魔御魔御(均)重量要求图标外观产出圣战手镯2-32.50-000-000-10.50-002攻击: 400.02%双头金刚(50级/5000血/不死系)|赤月魔穴(1725,2125)60分钟2只 0.02%双头血魔(55级/5000血/不死系)|赤月魔穴(1725,212…...
觅知解析计费系统重构版在线支付卡密充值多解析接口免授权无后门源码扶风二开
一、源码描述 这是一套视频解析计费源码(扶风二开),可配置多接口和专用特征解析接口,对接在线支付和卡密支付,支持在线充值和卡密充值,支持点数收费模式和包月套餐收费模式,可配置多个视频解析…...
C++11新特性_委托构造函数
格式定义 在 C11 里,委托构造函数的格式为:一个构造函数能够在其成员初始化列表里调用同一个类的其他构造函数。基本语法如下: class ClassName { public:// 被委托的构造函数(目标构造函数)ClassName(参数列表1) : …...
网工_IP协议
2025.02.17:小猿网&网工老姜学习笔记 第19节 IP协议 9.1 IP数据包的格式(首部数据部分)9.1.1 IP协议的首部格式(固定部分可变部分) 9.2 IP数据包分片(找题练)9.3 TTL生存时间的应用9.4 常见…...
C++负载均衡远程调用学习之QPS性能测试
目录 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 3.QPS_TEST_SERVER端实现 4.QPS_TEST_QPS简单介绍 5.QPS_TEST_QPS客户端工具编写和性能测试 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 ## 14) Reactor框架QPS性能测试 接下来我们写一个测试用例来测一下我们…...
C++负载均衡远程调用学习之消息队列与线程池
目录 1.昨日回顾 2.单线程的多路IO服务器模型和多线程模型区别 3.服务器的集中并发模式 4.LARSV0.8-task_msg消息队列任务数据类型 5.LARSV0.8--thread_queue消息队列的发送和接收流 6.LARSV0.8-thread_pool线程池的实现 7.LARSV0.8-thread_pool线程池的实现 8.LARSV0.8…...
Kotlin 基础
Kotlin基础语法详解 Kotlin是一种现代静态类型编程语言,由JetBrains开发,与Java完全互操作。以下是Kotlin的基础语法详解: 1. 基本语法 1.1 变量声明 // 不可变变量(推荐) val name: String = "Kotlin" val age = 25 // 类型推断// 可变变量 var count: In…...
实验数据的转换
最近做实验需要把x轴y轴z轴的数据处理一下,总结一下解决的方法: 源文件为两个txt文档,分别为x轴和y轴,如下: 最终需要达到的效果是如下: 就是需要把各个矩阵的数据整理好放在同一个txt文档里。 步骤① …...
多种尝试解决Pycharm无法粘贴外部文本【本人问题已解决】
#作者:允砸儿 #日期:乙巳青蛇年 四月初五 笔者在写demo的时候遇到一个非常棘手的问题就是pycharm无法复制粘贴,笔者相信有很多的朋友遇到过这种问题,笔者结合搜素到的和自己揣摩出来的方法帮助朋友们解决这种问题。 1、第一种…...
【C++】红黑树迭代版
目录 前言: 一:什么是红黑树? 二:插入什么颜色节点? 三:定义树 四:左单旋和右单旋 1.右单旋 2.左单旋 五:调整树 1.当parent节点为黑色时 2.当parent节点为红色时 2.1 u…...
OSPF路由协议配置
初始环境与准备: 物理连接:按照文件的拓扑连接了 3 台路由器 (R01, R02, R03)、2 台交换机 (Switch0, Switch1) 和 2 台 PC (PC0, PC1)。关键发现:路由器之间的连接实际使用的是以太网线(连接到 FastEthernet 接口),而不是串口线。…...
linux下抓包工具--tcpdump介绍
文章目录 1. 前言2. 命令介绍3. 常见选项3.1. 接口与基本控制3.2 输出控制3.3 文件操作3.4 高级调试 4. 过滤表达式4.1 协议类型4.2 方向与地址4.3 逻辑运算符 5. 典型使用场景5.1 网络故障排查5.2 安全分析与入侵检测5.3 性能分析与优化 linux下抓包工具--tcpdump介绍 1. 前言…...
探索 Disruptor:高性能并发框架的奥秘
在当今的软件开发领域,处理高并发场景是一项极具挑战性的任务。传统的并发解决方案,如基于锁的队列,往往在高负载下表现出性能瓶颈。而 Disruptor 作为一个高性能的并发框架,凭借其独特的设计和先进的技术,在处理海量数…...
smss源代码分析之smss!SmpLoadSubSystemsForMuSession函数分析加载csrss.exe
第一部分: Next SmpSubSystemsToLoad.Flink; while ( Next ! &SmpSubSystemsToLoad ) { p CONTAINING_RECORD( Next, SMP_REGISTRY_VALUE, Entry )…...
《AI大模型应知应会100篇》第44篇:大模型API调用最佳实践(附完整代码模板)
第44篇:大模型API调用最佳实践(附完整代码模板) 摘要 当你的应用突然面临每秒1000请求时,如何保证大模型API调用既稳定又经济?本文通过12个实战代码片段、3套生产级架构方案和20优化技巧,带你构建高性能的…...
第5篇:EggJS中间件开发与实战应用
在Web开发中,中间件(Middleware)是处理HTTP请求和响应的核心机制之一。EggJS基于Koa的洋葱模型实现了高效的中间件机制,本文将深入探讨中间件的执行原理、开发实践以及常见问题解决方案。 一、中间件执行机制与洋葱模型 1. 洋葱模…...