目錄
一、技術選型概述
二、確定Spring家族依賴的版本號
1.springcloud
2.spring cloud alibaba
3.springboot
三、確定資料庫資訊
1.MySQL相關
1.1 官網推薦,兼容性好
1.2 Maven使用頻率較高:
2.資料庫連接池
2.1 Druid與C3P0的比較
2.2 druid依賴的版本使用:1.2.6
四、搭建整個工程
1.父專案的pom依賴
2.子模塊的依賴
3.部分目錄結構
五、其他依賴
推薦閱讀
如果本篇博客對您有一定的幫助,大家記得留言+點贊+收藏哦,
一、技術選型概述
技術選型的基本原則:求穩,適當求新,
根據業務需求,選用B/S、微服務架構,使用Java作為后端開發語言,Vue作為前端開發,
專案管理工具使用禪道,內容管理工具使用Confluence,代碼協同工具使用Git,
資料庫使用MySQL,快取使用Redis,集成開發環境使用IDEA,
之前用過的,建議依舊沿用,
以上內容只是根據業務確定,
二、確定Spring家族依賴的版本號
SpringBoot、SpringCloud、SpringCloud Alibaba皆選用官網最穩定,最新版本,
1.springcloud
官網地址:Spring Cloud

2.spring cloud alibaba
官網地址:Spring Cloud Alibaba

3.springboot
官網地址:Spring Boot

SpringBoot選用2.3.12.RELEASE的原因是:SpringCloud Hoxton.SR12版本推薦使用 2.3.12.RELEASE版本,
三、確定資料庫資訊
1.MySQL相關
MySQL服務器的版本是5.6(之前安裝的繼續沿用)
mysql依賴的版本使用:8.0.16
1.1 官網推薦,兼容性好
MySQL :: MySQL Connector/J 5.1 Developer Guide :: 2 Connector/J Versions, and the MySQL and Java Versions They Require
MySQL :: MySQL Connector/J 8.0 Developer Guide :: 1 Overview of MySQL Connector/J
以下是 Connector/J 8.0的一些兼容性資訊:
JDBC版本:Connector/J 8.0實作JDBC 4.2,當Connector/J 8.0與JDBC更高版本的庫一起作業時,對于僅由JDBC 4.3和更高版本支持的方法呼叫,它會回傳SQLFeatureNotSupportedException,
MySQL服務器版本:Connector/J 8.0支持MySQL 5.6、5.7和8.0,
JRE版本:Connector/J 8.0支持JRE 8或更高版本,
編譯需要JDK:編譯Connector/J 8.0需要JDK 8.0或更高版本,此外,在連接到MySQL服務器時,可能需要定制JSSE提供程式來使用一些更高版本的TLS和密碼套件
強烈建議將 MySQL Connector/J 8.0 與 MySQL Server 8.0、5.7 和 5.6 一起使用,請升級到 MySQL Connector/J 8.0,

1.2 Maven使用頻率較高:

2.資料庫連接池
2.1 Druid與C3P0的比較
Java-資料庫連接池技術_小小張自由—>張有博-CSDN博客_java-資料庫連接池技術
2.2 druid依賴的版本使用:1.2.6
druid與druid-spring-boot-starter 的區別
作用是一樣的,都是連接池提供連接,里邊的配置引數都是一樣的;
druid-spring-boot-starter只是在druid基礎上進行了一次封裝,專門用來整合spring-boot專案;
如果springboot專案想使用druid也是可以的,但是需要手動撰寫配置類并注入到bean中,并加載對應的配置引數;
但是不建議,明明有現成封裝好的jar,就直接使用就好了!!!
四、搭建整個工程
1.父專案的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>com.tfjybj</groupId>
<artifactId>daily</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modules>
<module>daily-statistics</module>
</modules>
<!-- 統一管理jar包版本 -->
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<spring.boot.version>2.3.12.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR12</spring.cloud.version>
<spring.cloud.alibaba.version>2.1.2.RELEASE</spring.cloud.alibaba.version>
<mysql.version>8.0.16</mysql.version>
<druid.version>1.2.6</druid.version>
<swagger.version>2.9.2</swagger.version>
<lombok.version>1.18.8</lombok.version>
<xxl-job.version>2.2.0</xxl-job.version>
<fastjson.version>1.2.58</fastjson.version>
</properties>
<!-- 子模塊繼承之后,提供作用:鎖定版本+子modlue不用寫groupId和version -->
<!--在父工程pom檔案中宣告依賴,但不引入,父專案宣告,供子專案按需引入-->
<dependencyManagement>
<dependencies>
<!--spring boot,spring cloud,spring cloud alibaba-->
<!--選用官網穩定的版本-->
<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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring.cloud.alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--swagger生成API檔案-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--fastjson的依賴-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--lombok的依賴-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--所有宣告在父專案 dependencies 中的依賴都會自動引入,并默認被所有子專案繼承-->
<!--即使在子專案中不引入該依賴,那么子專案依然會從父專案中繼承該依賴項,-->
<dependencies>
</dependencies>
</project>
2.子模塊的依賴
<?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>
<artifactId>daily</artifactId>
<groupId>com.tfjybj</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>daily-statistics</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- nacos服務注冊/發現-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--nacos配置中心來做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--重復依賴,但是沒有找到在哪里-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--mysql:官網推薦 Maven使用頻率較高-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!--swagger生成API檔案-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!--lombok的依賴-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--json格式轉換-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
<!--用于專案打包,打包需要的插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.12.RELEASE</version>
</plugin>
</plugins>
</build>
</project>
2.1 nacos中的部分配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
url: jdbc:mysql://mysql.xxx.tech/daily_prod
username: roots
password: roots
filter:
config:
enabled: true #資料庫過濾器是否開啟
connect-properties:
druid.statmergeSql: true #打開mergeSql功能
druid.stat.slowSqlMillis: 5000 #慢SQL記錄
config.decrypt: false #是否解密
config.decrypt.key: ${custom.publicKey} #解密的公鑰
jpa:
hibernate:
# 物體類發生改變,資料表會更新
ddl-auto: update
# 操作物體物件的時候,會跟我們生成sql陳述句: false 不生成sql陳述句:
show-sql: true
2.2 Bootstrap中部分的配置
server:
port: 9000
spring:
cloud:
nacos:
discovery:
server-addr: nacos.xxx.tech:80
namespace: Daily-dev
config:
server-addr: nacos.xxx.tech:80
namespace: Daily
prefix: statistics
file-extension: yml
application:
name: Daily-statistics
xxl:
job:
admin:
addresses: http://xxljob.xxx.tech:8081/job-admin-dev #xxljob調度中心部署 例如:http://127.0.0.1:8080/xxl-job-admin
executor:
appname: daily-test #xxljob配置的執行器名稱,
ip: #執行器IP,默認為空表示自動獲取IP
port: 9998 #xxljob配置的埠號,默認為9999
logpath: /data/xxl-job/jobhandler #執行器運行日志檔案存盤磁盤路徑
logretentiondays: -1 #調度中心日志表資料保存天數,過期日志自動清理;限制大于等于7時生效,否則, 如-1,關閉自動清理功能
accessToken: #調度中心通訊TOKEN [選填]:非空時啟用
logging:
level:
com.alibaba: warn
3.部分目錄結構

五、其他依賴
其他依賴的版本號:沒有仔細研究,使用我們其他專案中常用的,其實也可以直接去Maven官網上找,https://mvnrepository.com/
或者去github社區看看活躍度,沒活躍度的就別用了,容易出錯,出錯不易解決,
推薦閱讀
使用到了nacos做注冊中心,配置中心,配置程序請見博客:SpringBoot專案集成nacos,并啟動報錯Failed to configure a DataSource: ‘url‘ attribute is not speci_小小張自由—>張有博-CSDN博客_springboot集成nacos啟動報錯
使用到了xxljob管理定時任務,配置程序請見博客:SpringBoot專案集成xxljob全紀錄(圖文詳解)_小小張自由—>張有博-CSDN博客
使用到了sonarqube檢查代碼質量,配置程序請見博客:配置sonarqube的全程序_小小張自由—>張有博-CSDN博客_sonarqube使用方法
對例外進行了統一處理,配置程序請見博客:Spring Boot 統一處理全域例外_小小張自由—>張有博-CSDN博客
通過AOP實作全域日志列印,配置程序請見博客:
通過AOP實作全域日志列印_小小張自由—>張有博-CSDN博客
如果本篇博客對您有一定的幫助,大家記得留言+點贊+收藏哦,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379472.html
標籤:java
