目录
一、技术选型概述
二、确定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的比较
张有博-CSDN博客_java-数据库连接池技术">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依赖
4.0.0
com.tfjybj
daily
1.0.0-SNAPSHOT
pom
org.springframework.boot
spring-boot-starter-parent
2.3.12.RELEASE
daily-statistics
8
8
2.3.12.RELEASE
Hoxton.SR12
2.1.2.RELEASE
8.0.16
1.2.6
2.9.2
1.18.8
2.2.0
1.2.58
org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import
org.springframework.cloud
spring-cloud-dependencies
${spring.cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring.cloud.alibaba.version}
pom
import
io.springfox
springfox-swagger2
${swagger.version}
io.springfox
springfox-swagger-ui
${swagger.version}
com.alibaba
fastjson
${fastjson.version}
org.projectlombok
lombok
${lombok.version}
2.子模块的依赖
daily
com.tfjybj
1.0.0-SNAPSHOT
4.0.0
daily-statistics
8
8
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-test
mysql
mysql-connector-java
8.0.16
com.alibaba
druid-spring-boot-starter
1.2.6
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.projectlombok
lombok
com.alibaba
fastjson
com.xuxueli
xxl-job-core
2.0.2
org.springframework.boot
spring-boot-maven-plugin
2.3.12.RELEASE
4.0.0 com.tfjybj daily1.0.0-SNAPSHOT pom org.springframework.boot spring-boot-starter-parent2.3.12.RELEASE daily-statistics 8 8 2.3.12.RELEASE Hoxton.SR12 2.1.2.RELEASE 8.0.16 1.2.6 2.9.2 1.18.8 2.2.0 1.2.58 org.springframework.boot spring-boot-dependencies${spring.boot.version} pom import org.springframework.cloud spring-cloud-dependencies${spring.cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies${spring.cloud.alibaba.version} pom import io.springfox springfox-swagger2${swagger.version} io.springfox springfox-swagger-ui${swagger.version} com.alibaba fastjson${fastjson.version} org.projectlombok lombok${lombok.version}
2.子模块的依赖
daily
com.tfjybj
1.0.0-SNAPSHOT
4.0.0
daily-statistics
8
8
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-test
mysql
mysql-connector-java
8.0.16
com.alibaba
druid-spring-boot-starter
1.2.6
io.springfox
springfox-swagger2
io.springfox
springfox-swagger-ui
org.projectlombok
lombok
com.alibaba
fastjson
com.xuxueli
xxl-job-core
2.0.2
org.springframework.boot
spring-boot-maven-plugin
2.3.12.RELEASE
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做注册中心,配置中心,配置过程请见博客:张有博-CSDN博客_springboot集成nacos启动报错">SpringBoot项目集成nacos,并启动报错Failed to configure a DataSource: ‘url‘ attribute is not speci_小小张自由—>张有博-CSDN博客_springboot集成nacos启动报错
使用到了xxljob管理定时任务,配置过程请见博客:张有博-CSDN博客">SpringBoot项目集成xxljob全纪录(图文详解)_小小张自由—>张有博-CSDN博客
使用到了sonarqube检查代码质量,配置过程请见博客:张有博-CSDN博客_sonarqube使用方法">配置sonarqube的全过程_小小张自由—>张有博-CSDN博客_sonarqube使用方法
对异常进行了统一处理,配置过程请见博客:张有博-CSDN博客">Spring Boot 统一处理全局异常_小小张自由—>张有博-CSDN博客
通过AOP实现全局日志打印,配置过程请见博客:
张有博-CSDN博客">通过AOP实现全局日志打印_小小张自由—>张有博-CSDN博客



