[编程代码] 新项目如何技术选型以及落地实现

5242 0
黑夜隐士 2021-12-13 08:10:55 | 显示全部楼层 |阅读模式

目录

一、技术选型概述

二、确定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

image.png

2.spring cloud alibaba

官网地址:Spring Cloud Alibaba

image.png

3.springboot

官网地址:Spring Boot

image.png

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。

image.png

1.2 Maven使用频率较高:

image.png

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依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.tfjybj</groupId>
  7. <artifactId>daily</artifactId>
  8. <version>1.0.0-SNAPSHOT</version>
  9. <packaging>pom</packaging>
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>2.3.12.RELEASE</version>
  14. <relativePath/> <!-- lookup parent from repository -->
  15. </parnt>
  16. <modules>
  17. <module>daily-statistics</module>
  18. </modules>
  19. <!-- 统一管理jar包版本 -->
  20. <properties>
  21. <maven.compiler.source>8</maven.compiler.source>
  22. <maven.compiler.target>8</maven.compiler.target>
  23. <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
  24. <spring.cloud.version>Hoxton.SR12</spring.cloud.version>
  25. <spring.cloud.alibaba.version>2.1.2.RELEASE</spring.cloud.alibaba.version>
  26. <mysql.version>8.0.16</mysql.version>
  27. <druid.version>1.2.6</druid.version>
  28. <swagger.version>2.9.2</swagger.version>
  29. <lombok.version>1.18.8</lombok.version>
  30. <xxl-job.version>2.2.0</xxl-job.version>
  31. <fastjson.version>1.2.58</fastjson.version>
  32. </properties>
  33. <!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
  34. <!--在父工程pom文件中声明依赖,但不引入,父项目声明,供子项目按需引入-->
  35. <dependencyManagement>
  36. <dependencies>
  37. <!--spring boot,spring cloud,spring cloud alibaba-->
  38. <!--选用官网稳定的版本-->
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-dependencies</artifactId>
  42. <version>${spring.boot.version}</version>
  43. <type>pom</type>
  44. <scope>import</scope>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.springframework.cloud</groupId>
  48. <artifactId>spring-cloud-dependencies</artifactId>
  49. <version>${spring.cloud.version}</version>
  50. <type>pom</type>
  51. <scope>import</scope>
  52. </dependency>
  53. <dependency>
  54. <groupId>com.alibaba.cloud</groupId>
  55. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  56. <version>${spring.cloud.alibaba.version}</version>
  57. <type>pom</type>
  58. <scope>import</scope>
  59. </dependency>
  60. <!--swagger生成API文档-->
  61. <dependency>
  62. <groupId>io.springfox</groupId>
  63. <artifactId>springfox-swagger2</artifactId>
  64. <version>${swagger.version}</version>
  65. </dependency>
  66. <dependency>
  67. <groupId>io.springfox</groupId>
  68. <artifactId>springfox-swagger-ui</artifactId>
  69. <version>${swagger.version}</version>
  70. </dependency>
  71. <!--fastjson的依赖-->
  72. <dependency>
  73. <groupId>com.alibaba</groupId>
  74. <artifactId>fastjson</artifactId>
  75. <version>${fastjson.version}</version>
  76. </dependency>
  77. <!--lombok的依赖-->
  78. <dependency>
  79. <groupId>org.projectlombok</groupId>
  80. <artifactId>lombok</artifactId>
  81. <version>${lombok.version}</version>
  82. </dependency>
  83. </dependencies>
  84. </dependencyManagement>
  85. <!--所有声明在父项目 dependencies 中的依赖都会自动引入,并默认被所有子项目继承-->
  86. <!--即使在子项目中不引入该依赖,那么子项目依然会从父项目中继承该依赖项。-->
  87. <dependencies>
  88. </dependencies>
  89. </project>
复制代码

2.子模块的依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>daily</artifactId>
  7. <groupId>com.tfjybj</groupId>
  8. <version>1.0.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>daily-statistics</artifactId>
  12. <properties>
  13. <maven.compiler.source>8</maven.compiler.source>
  14. <maven.compiler.target>8</maven.compiler.target>
  15. </properties>
  16. <dependencies>
  17. <!-- nacos服务注册/发现-->
  18. <dependency>
  19. <groupId>com.alibaba.cloud</groupId>
  20. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  21. </dependency>
  22. <!--nacos配置中心来做配置管理-->
  23. <dependency>
  24. <groupId>com.alibaba.cloud</groupId>
  25. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter-web</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-data-jpa</artifactId>
  34. </dependency>
  35. <!--重复依赖,但是没有找到在哪里-->
  36. <!-- <dependency>-->
  37. <!-- <groupId>org.springframework.boot</groupId>-->
  38. <!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
  39. <!-- </dependency>-->
  40. <dependency>
  41. <groupId>org.springframework.boot</groupId>
  42. <artifactId>spring-boot-starter-test</artifactId>
  43. </dependency>
  44. <!--mysql:官网推荐 Maven使用频率较高-->
  45. <dependency>
  46. <groupId>mysql</groupId>
  47. <artifactId>mysql-connector-java</artifactId>
  48. <version>8.0.16</version>
  49. </dependency>
  50. <!-- druid -->
  51. <dependency>
  52. <groupId>com.alibaba</groupId>
  53. <artifactId>druid-spring-boot-starter</artifactId>
  54. <version>1.2.6</version>
  55. </dependency>
  56. <!--swagger生成API文档-->
  57. <dependency>
  58. <groupId>io.springfox</groupId>
  59. <artifactId>springfox-swagger2</artifactId>
  60. </dependency>
  61. <dependency>
  62. <groupId>io.springfox</groupId>
  63. <artifactId>springfox-swagger-ui</artifactId>
  64. </dependency>
  65. <!--lombok的依赖-->
  66. <dependency>
  67. <groupId>org.projectlombok</groupId>
  68. <artifactId>lombok</artifactId>
  69. </dependency>
  70. <!--json格式转换-->
  71. <dependency>
  72. <groupId>com.alibaba</groupId>
  73. <artifactId>fastjson</artifactId>
  74. </dependency>
  75. <dependency>
  76. <groupId>com.xuxueli</groupId>
  77. <artifactId>xxl-job-core</artifactId>
  78. <version>2.0.2</version>
  79. </dependency>
  80. </dependencies>
  81. <!--用于项目打包,打包需要的插件-->
  82. <build>
  83. <plugins>
  84. <plugin>
  85. <groupId>org.springframework.boot</groupId>
  86. <artifactId>spring-boot-maven-plugin</artifactId>
  87. <version>2.3.12.RELEASE</version>
  88. </plugin>
  89. </plugins>
  90. </build>
  91. </project>
复制代码

2.1 nacos中的部分配置

  1. spring:
  2. datasource:
  3. type: com.alibaba.druid.pool.DruidDataSource
  4. druid:
  5. url: jdbc:mysql://mysql.xxx.tech/daily_prod
  6. username: roots
  7. password: roots
  8. filter:
  9. config:
  10. enabled: true #数据库过滤器是否开启
  11. connect-properties:
  12. druid.statmergeSql: true #打开mergeSql功能
  13. druid.stat.slowSqlMillis: 5000 #慢SQL记录
  14. config.decrypt: false #是否解密
  15. config.decrypt.key: ${custom.publicKey} #解密的公钥
  16. jpa:
  17. hibernate:
  18. # 实体类发生改变,数据表会更新
  19. ddl-auto: update
  20. # 操作实体对象的时候,会跟我们生成sql语句: false 不生成sql语句:
  21. show-sql: true
复制代码

2.2 Bootstrap中部分的配置

  1. server:
  2. port: 9000
  3. spring:
  4. cloud:
  5. nacos:
  6. discovery:
  7. server-addr: nacos.xxx.tech:80
  8. namespace: Daily-dev
  9. config:
  10. server-addr: nacos.xxx.tech:80
  11. namespace: Daily
  12. prefix: statistics
  13. file-extension: yml
  14. application:
  15. name: Daily-statistics
  16. xxl:
  17. job:
  18. admin:
  19. addresses: http://xxljob.xxx.tech:8081/job-admin-dev #xxljob调度中心部署 例如:http://127.0.0.1:8080/xxl-job-admin
  20. executor:
  21. appname: daily-test #xxljob配置的执行器名称,
  22. ip: #执行器IP,默认为空表示自动获取IP
  23. port: 9998 #xxljob配置的端口号,默认为9999
  24. logpath: /data/xxl-job/jobhandler #执行器运行日志文件存储磁盘路径
  25. logretentiondays: -1 #调度中心日志表数据保存天数,过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能
  26. accessToken: #调度中心通讯TOKEN [选填]:非空时启用
  27. logging:
  28. level:
  29. 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://blog.csdn.net/promsing/article/details/121869224
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行