目录
2.3.1.4 spring-boot-starter-parent
2.6.1.3 application.properties
二、掌控SpringBoot基础篇
2.1 Spring Boot ?
Spring Boot 是目前流行的微服务框架 倡导 约定优先于配置” 其设 目的是 用来简化新 Spring 应用的初始化搭建以及开发过程。 Spring Boot 提供了很多核心的功 能,比如自动化配置 starter(启动器) 简化 Maven 配置、内嵌 Servlet 容器、应用监控等功能, 让我们可以快速构建企业级应用程序。
特性:
- 创建独立的Spring 应用程序。
- 嵌入式 Tomcat、 Jetty、 Undertow容器(jar)
- 提供的 starters 简化构建配置(简化依赖管理和版本控制)
- 尽可能自动配置 spring应用和第三方库
- 提供生产指标,例如指标、健壮检查和外部化配置
- 没有代码生成,无需XML配置
SpringBoot同时提供 “开箱即用”,“约定优于配置”的特性。
开箱即用:Spring Boot应用无需从0开始,使用脚手架创建项目。基础配置已经完成。 集成大部分第三方库对象,无需配置就能使用。例如在Spring Boot项目中使用MyBatis。可以直接使用XXXMapper对象, 调用方法执行sql语句。
约定优于配置:Spring Boot定义了常用类,包的位置和结构,默认的设置。代码不需要做调整,项目能够按照预期运行。比如启动类在根包的路径下,使用了@SpringBooApplication注解。 创建了默认的测试类。controller, service,dao应该放在根包的子包中。application为默认的配置文件。
脚手架(spring提供的一个web应用,帮助开发人员,创建springboot项目) SpringBoot3 最小jdk17, 支持17-20.
Spring Boot理念“约定优于配置”,也可称为按约定编程。
2.1.1 与Spring关系
Spring框架:
Spring Boot创建的是Spring应用,对于这点非常重要。也就是使用Spring框架创建的应用程序。这里的Spring是指 Spring Framework。 我们常说的Spring,一般指Spring家族,包括Spring Boot、Spring Framework 、Spring Data ,Spring Security,Spring Batch , Spring Shell, Spring for Apache Kafka ....。
2004年3月,Spring Framework1.0发布。2006年10 月,Spring Framework2.0发布。 2006年后开始,国内项目渐渐的开始应用Spring框架,2009年12月,Spring3.0发布。这时国内已经比较注重Spring使用了。项目多数转移到Spring框架了。 我是在2007开始知道渐渐了解Spring框架。 那个时候用Struts或者就是jsp+servlet+jdbc比较多。当时研发项目也没什么烦恼, 就一,两个技术可以用。没什么可选择的。现在的框架,技术太多了。2017 年 09 月,Spring Framework5.0 发布。 2022年11月Spring Framework6.0发布。
第一个版本1.0的blog:https://spring.io/blog/2004/03/24/spring-framework-1-0-final-released Spring的核心功能:IoC , AOP , 事务管理,JDBC,SpringMVC , Spring WebFlux,集成第三方框架MyBatis,Hibernate, Kafka , 消息队列...
Spring包含SpringMVC, SpringMVC作为web开发的强有力框架,是Spring中的一个模块。
首先明确一点,Spring Boot和Spring Framework都是创建的Spring应用程序。Spring Boot 是一个新的框架,看做是Spring 框架的扩展,它消除了设置 Spring 应用程序所需的 XML配置,为更快,更高效的创建Spring应用提供了基础平台。Spring Boot能够快速创建基于Spring ,SpringMVC的普通应用以及Web项目。
SpringBoot是包含了Spring 、SpringMVC的高级的框架,提供了自动功能,短平快。能够更快的创建Spring应用。消除了Spring的XML配置文件,提供了开发效率,消除Spring应用的臃肿。避免了大量的样板代码。
所以学习Spring Boot的建议:了解Spring + SpringMVC核心功能,基本应用是最好的,能够更快的上手Spring Boot。一般的Spring Boot课程中默认听众是会Spring ,SpringMVC的。
Spring Boot在现在Java开发人员必须掌握的框架。Spring Boot是掌握Spring Cloud的基础。
2.1.2 与SpringCloud关系
微服务:微服务(Microservices Architecture)是一种架构和组织方法,微服务是指单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。
将一个大型应用的功能,依据业务功能类型,抽象出相对独立的功能,称为服务。每个服务就上一个应用程序,有自己的业务功能,通过轻量级的通信机制与其他服务通信(通常是基于HTTP的RESTful API),协调其他服务完成业务请求的处理。 这样的服务是独立的,与其他服务是隔离的, 可以独立部署,运行。与其他服务解耦合。
微服务看做是模块化的应用,将一个大型应用,分成多个独立的服务,通过http或rpc将多个部分联系起来。请求沿着一定的请求路径,完成服务处理。
项目规模大,服务多。要构建大型的分布式应用,保证应用的稳定,高效,不间断的提供服务。Spring Cloud是对分布式项目提供了,有力的支持。
Spring Cloud是一系列框架的有序的组合,为开发人员提供了快速构建分布式系统中常用工具(例如,配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。开发人员使用使用Spring Cloud这套框架和工具的集合可以快速建立实现分布式服务。这些框架需要使用Spring Boot作为基础开发平台。
学好了Spring Boot,才能使用这些框架,创建良好的Spring Cloud应用。分布式应用。
访问:https://spring.io/projects/spring-cloud
Spring Cloud包含的这些框架和工具各负其职,例如Spring Cloud Config提供配置中心的能力,给分布式多个服务提供动态的数据配置,像数据库的url,用户名和密码等,第三方接口数据等。 Spring Cloud Gateway网关,提供服务统一入口,鉴权,路由等功能。
学习Spring Colud难度比较大,里面框架,工具比较多。有多个框架需要学习,在把框架组合起来又是一个难度。
2.1.3 最新的Spring Boot3 新特性
2022年11月 24日。Spring Boot3发布,里程碑的重大发布。这个版本应该是未来5年的使用主力。Spring官网支持Spring Boot3.0.X版本到2025年。
SpringBoot3中的重大变化:
- JDK最小Java 17,能够支持17-20.
- Spring Boot 3.0 已将所有底层依赖项从 Java EE 迁移到了 Jakarta EE API。原来javax开头的包名,修改为jakarta。 例如 jakarta.servlet.http.HttpServlet 原来javax.servlet.http.HttpServlet
- 支持 GraalVM 原生镜像。将Java应用编译为本机代码,提供显著的内存和启动性能改进。
- 对第三方库,更新了版本支持。
- 自动配置文件的修改。
- 提供新的声明式Http服务, 在接口方法上声明@HttpExchange获取http远程访问的能力。代替OpenFeign
- Spring HTTP 客户端提供基于 Micrometer 的可观察性. 跟踪服务,记录服务运行状态等
- AOT(预先编译) 支持Ahead Of Time,指运行前编译
- Servlet6.0规范
- 支持 Jackson 2.14。
- Spring MVC :默认情况下使用的 PathPatternParser。删除过时的文件和 FreeMarker 、JSP 支持。
伴随着Spring Boot3的发布,还有 Spring Framework 6.0的发布(2022-11-16),先于Spring Boot发布。
2.1.4 如何学好框架
学习框架:我的建议无基础,先看视频,照着例子做;有基础后自己做点程序。 之后看图书,最好是官网文档。不建议开始就看源代码。
有基础的:看图书,最好是官网文档,边看文档边实践。可以看框架此处功能的源代码。不建议通篇看源代码(在巨人身上是看不到全貌的)。提高部分看开源项目的代码,最后写项目。
2.2 脚手架
脚手架是一种用在建筑领域的辅助工具,是为了保证建筑施工过程顺利进行而搭设的工作平台。软件工程中的脚手架是用来快速搭建一个小的可用的应用程序的骨架,将开发过程中要用到的工具、环境都配置好,同时生成必要的模板代码。
脚手架辅助创建程序的工具,Spring Initializr是创建Spring Boot项目的脚手架。快速建立 Spring Boot项目的最好方式。他是一个web应用,能够在浏览器中使用。IDEA中继承了此工具,用来快速创建Spring Boot项目以及Spring Cloud项目。
Spring Initializr脚手架的web地址: https://start.spring.io/
阿里云脚手架:https://start.aliyun.com/
2.2.1 使用脚手架创建项目
- 浏览器访问脚手架,创建项目
- IDEA中使用脚手架。
创建Spring Boot工程 Lesssion02-Project , Lession03-Project。
脚手架使用需要联网。
2.2.2 IDEA创建SpringBoot项目
2.3 代码结构
2.3.1.1 单一模块
一个工程一个模块的完整功实现。创建学生模块功能的Spring Boot项目Lession04-single com.example.模块名称
+----Application.java 启动类
+----controller 控制器包
---StudentController.java
---ScoreController.java
+----service 业务层包
--inter 业务层接口
---impl 接口实现包
+----repository 持久层包
+----model 模型包
---entity 实体类包
---dto 数据传输包
---vo 视图数据包
2.3.1.2 多个模块
一个Spring Boot中多个模块。在根包下创建每个模块的子包, 子包中可以按“单一模块”包结构定义。 创建包含多个功能的单体Spring Boot。 Lession05-crm (activity, sale, customer等模块)
2.3.1.3 包和主类
我们通常建议您将主应用程序类定位在其他类之上的根包中。@SpringBootApplic