一、spring是什么?

spring是什么

Spring 即是(Spring Framework)为现代基于Java的企业应用程序提供了一个全面的编程和配置模型-在任何类型的部署平台上。

Spring的一个关键元素是应用程序级别的基础设施支持:Spring专注于企业应用程序的“管道”,以便团队可以专注于应用程序级别的业务逻辑,而无需与特定的部署环境进行不必要的联系。

我们在golang等编程语言中也曾听说过”管道”一词,它在编程领域到底是怎么的一种编程理念呢? 按照我本身的理解应该是程序语言专注于在底层将基础功能实现、而使得程序员能够更加专注于业务领域的发展,类似于现实世界中的地下输水管道、地下电缆管道、地下光纤管道等等…

Spring框架版本

支持的版本

  • 6.2.x 是即将推出的功能分支(2024 年 11 月)。
  • 自 2023 年 11 月起,6.1.x 为主要生产线。
  • 6.0.x 是上一个生产线,自 2022 年 11 月起上市。这一新框架一代配备了 JDK 17 和 Jakarta EE 9 基线。
  • 5.3.x 是第五代的最后一个功能分支,在 JDK 8、JDK 11、JDK 17、JDK 21 和 Java EE 8 级别提供长期支持。
  • 4.3.x 于 2020 年 12 月 31 日达到其官方 EOL(生命周期终止)。该系列中没有计划进一步的维护和安全补丁。
  • 3.2.x 于 2016 年 12 月 31 日达到其官方 EOL(使用寿命终止)。该系列中没有计划进一步的维护和安全补丁。

JDK版本范围

  • Spring Framework 6.2.x:JDK 17-25(预期)
  • Spring Framework 6.1.x:JDK 17-23
  • Spring Framework 6.0.x:JDK 17-21
  • Spring Framework 5.3.x:JDK 8-21(截至 5.3.26)

假设当前所在项目jdk为11,spring boot 版本为2.7.8 则Spring的最低版本应该为5.3.x ; 且spring boot 2 的最高版本为2.7.18

Spring核心内容

  • 依赖注入 (dependency injection)
  • 事件 (events)

  • 资源 (resources)

  • i18n (国际化)

  • 验证 (validation)

  • 数据绑定 (data binding)

  • 类型转换 (type conversion)

  • SpEL

  • AOP

使用Spring Initializr引导应用程序。

当前不在支持在线生成基于spring boot2 版本

当前不在支持在线生成基于spring boot2 版本

Spring Boot 2.x 版本已经停止维护,这意味着官方不再提供更新或支持。这个决定是由于 Spring Boot 3.x 版本的推出,该版本带来了许多新特性和改进,以及对 Java 17 及更高版本的 Java 开发环境的支持。因此,Spring Boot 官方的 Spring Initializr 不再提供 2.x 版本的选项,转而全力维护 3.x 版本。

对于需要继续使用 Spring Boot 2.x 版本的项目,可以考虑以下解决方案

  • 使用阿里云提供的镜像服务:你可以通过更改 IDEA 的 Server URL 为阿里云提供的镜像服务地址来创建基于 Java 8 的 Spring Boot 2.x 项目

  • 手动修改版本号:你也可以直接从 Spring Initializr 创建任意 Spring Boot 和 Java 版本的 Spring Boot 项目,然后手动修改 pom.xml 或 build.gradle 中的版本配置,以匹配所需的 2.x 版本和 Java 8

基于Spring Initializr建立基础项目

  1. 基础的数据库连接

建立mysql数据库的基础排序规则一般是什么?

MySQL数据库的基础排序规则通常指的是字符集(character set)和排序规则(collation)。字符集定义了数据库可以存储的字符集,而排序规则定义了字符的比较和排序方式。

对于MySQL数据库,最常见的字符集是utf8mb4,它支持UTF-8编码,并且可以存储任何Unicode字符,包括表情符号。utf8mb4是utf8的扩展,因为原始的utf8只支持最多三个字节的UTF-8编码,而utf8mb4支持最多四个字节的UTF-8编码。

对于排序规则,utf8mb4字符集的默认排序规则通常是utf8mb4_general_ci,这意味着它是以大小写不敏感的方式比较字符的。如果你的应用需要大小写敏感的比较,你可能需要使用utf8mb4_bin排序规则,它使用二进制比较,或者utf8mb4_unicode_ci,它提供了更好的多语言支持。

在创建MySQL数据库时,你可以指定字符集和排序规则,例如:

1
2
3
4
CREATE DATABASE mydatabase
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

这将创建一个使用utf8mb4字符集和utf8mb4_general_ci排序规则的数据库。

在选择排序规则时,你应该考虑你的应用的需求,比如是否需要大小写敏感的搜索,是否需要支持多语言等。通常,utf8mb4_general_ci是一个很好的默认选择,因为它适用于大多数情况,并且在大小写不敏感的比较上有较好的性能。如果你有特殊的需求,你可能需要选择一个不同的排序规则

  1. 错误信息处理、没有正确配置application.propertie或者yml

Error creating bean with name ‘dataSource’ defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method ‘dataSource’ threw exception with message: Failed to determine a suitable driver class

1
2
3
4
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

或者是

1
2
3
4
5
6
7
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC
username: myuser
password: mypassword
driver-class-name: com.mysql.cj.jdbc.Driver

  1. controller最佳实践

在Spring框架中,控制器的命名通常遵循以下最佳实践:

  • 命名规范:使用驼峰式命名法,以大写字母开头,每个单词的首字母大写。例如,UserController、OrderController、ProductViewController。
  • 明确性:控制器的名称应该清晰地反映其职责和管理的资源。如果控制器处理的是特定的域对象,通常以该对象的名称结尾,如User、Order等。
  • 复数形式:如果控制器管理的是一组资源,通常使用复数形式命名,如UsersController、OrdersController。
  • 避免冗余:如果已经在包名中包含了上下文信息,如com.example.users,则控制器名称中可以省略这部分信息,直接命名为UserController。
  • 简洁性:尽量保持控制器名称的简洁,同时确保其描述性。
  • 一致性:在整个项目中保持一致的命名规则,这有助于其他开发者快速理解代码结构和功能。
    例如,如果你正在构建一个电商应用,你可能会有以下控制器:

UserController:处理与用户相关的请求。
ProductController:处理与产品相关的请求。
OrderController:处理与订单相关的请求。
记住,这些只是建议,并不是强制规则。最重要的是在你的团队和项目中保持一致性和可读性。

下次继续: