架构师必会:新项目如何技术选型以及落地实现

网友投稿 835 2022-05-29

一、技术选型概述

二、确定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皆选用官网最稳定,最新版本。

springcloud

官网地址:https://spring.io/projects/spring-cloud#learn

springcloudalibaba

官网地址:https://spring.io/projects/spring-cloud-alibaba#learn

springboot

官网地址:https://spring.io/projects/spring-boot#learn

SpringBoot选用2.3.12.RELEASE的原因是:SpringCloud Hoxton.SR12版本推荐使用 2.3.12.RELEASE版本。

三、确定数据库信息

MySQL相关

MySQL服务器的版本是5.6(之前安装的继续沿用)

mysql依赖的版本使用:8.0.16

1.官网推荐,兼容性好

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-overview.html

以下是 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。

2.Maven使用频率较高:

数据库连接池

Druid与C3P0的比较

https://blog.csdn.net/promsing/article/details/113714712

druid依赖的版本使用:1.2.6

druid与druid-spring-boot-starter 的区别

作用是一样的,都是连接池提供连接,里边的配置参数都是一样的;

druid-spring-boot-starter只是在druid基础上进行了一次封装,专门用来整合spring-boot项目;

如果springboot项目想使用druid也是可以的,但是需要手动编写配置类并注入到bean中,并加载对应的配置参数;

但是不建议,明明有现成封装好的jar,就直接使用就好了!!!

四、搭建整个工程

父项目的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}

子模块的依赖

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

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

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做注册中心,配置中心,配置过程请见博客:https://blog.csdn.net/promsing/article/details/121123765

使用到了xxljob管理定时任务,配置过程请见博客:https://blog.csdn.net/promsing/article/details/121322206

使用到了sonarqube检查代码质量,配置过程请见博客:https://blog.csdn.net/promsing/article/details/121567177

对异常进行了统一处理,配置过程请见博客:https://blog.csdn.net/promsing/article/details/121655576

Java MySQL Spring Spring Boot

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:鲲鹏之开发套件DevKit【玩转华为云】
下一篇:[CloudNative] 企业应用上云实践手记-Cloud Native Phase 4 -如何实现云上弹性伸缩和熔断限流
相关文章