当前位置:   article > 正文

第①篇 Spring Boot 3.X的到来_springboot3.x

springboot3.x

1.1 Spring Boot的特点

谈到Spring Boot,就让我们先来了解它的特点。依据官方的文档,Spring Boot的特点如下:

  • 创建独立的Spring应用程序;
  • 嵌入的Tomcat、Jetty或者Undertow,无须部署WAR文件;
  • 允许通过Maven或Gradle来根据需要获取启动器(starter);
  • 尽可能地自动配置Spring;
  • 提供生产就绪型功能,如指标、健康检查和外部配置;
  • 绝对没有代码生成,对XML没有要求配置。

这段描述告诉我们,首先Spring Boot是一个基于Spring框架搭建起来的独立应用,其次它会嵌入Tomcat、Jetty或者Undertow等服务器,并且不需要传统的WAR文件进行部署,也就是说搭建Spring Boot项目并不需要单独下载Tomcat等传统的服务器;同时提供通过Maven(或者Gradle)依赖的starter,这些starter可以直接获取开发所需的相关包,通过这些starter项目就能以Java Application的形式运行Spring Boot的项目,而无须其他服务器配置;对于配置,Spring Boot提供Spring框架的最大自动化配置,大量使用自动配置,使得开发者对Spring的配置尽量减少;此外还提供了一些监测、自动检测的功能和外部配置,与此同时没有任何附加代码和XML的配置要求。

“约定优于配置”,这是Spring Boot的主导思想。Spring Boot的应用大部分情况下存在默认配置,你甚至可以在没有任何定义的情况下使用Spring框架,如需自定义一般通过配置文件即可,十分便捷。对于部署这些项目必需的功能,Spring Boot提供starter的依赖,例如,spring-boot-starter-web捆绑了Spring MVC所依赖的包外,它还会捆绑内嵌的Tomcat,这样使得开发者能够尽可能快地搭建开发环境,快速进行开发、部署和测试,这就是Spring Boot的特色。

1.2 Spring Boot 3.0所需的环境

如今随着时间到了2021年,Jakarta EE也得到了长足的发展,加上Java 8语法的严重落后于其他语言,导致了Java语言发展也遇到了瓶颈。因此在Spring 6中,就已经决定基于Java 17+和Jakarta EE 9进行开发,而新版的Spring Boot 3.x是基于Spring 6进行开发,因此也要求基于Java 17+和Jakarta EE 9,并尽可能向上兼容Jakarta EE 10。应该说Spring 6是Spring框架的重大升级,以便于更好地支持容器、微服务的开发,并拥有更快创新速度,这也是未来数年Java企业级发展的方向。

报告:企业版 Java 正在复兴,Jakarta EE 使用率达 47%

从文章来看Jakarta EE已经渐渐的崛起,目前也开始占据了未来的主导方向。Java 17 将是继 Java 8 以来最重要的长期维护版本(LTS),是 Java 社区八年努力的成果。它还集成了许多Java 8后的Java语法,这些都能让Java适应新的语法趋势。

是
Spring Boot 3.0只能支持Java 17+

Spring 也打算从Spring 5升级到Spring 6,而Spring 6将不能支持Java 8,而只能支持Java 17+。与此同时,由于Spring 6的升级,也必然导致Spring Boot的升级到3.x的版本。

1.3 Spring Boot 3.0 正式发布,我在更新书籍《深入浅出Spring Boot 3.x》

Spring Boot 3.0的正式版本预计到2022年11月24日正式发布。

时过境迁,在2018年,本人出版了《深入浅出Spring Boot 2.x》称为了业界畅销书籍。因此有必要升级为《深入浅出Spring Boot 2.x》。

现在已经迫在眉睫,我打算在2023年5月到8月发版新书,之所以这么久才上,主要是出版社审核变慢,其实也不能怪出版社,这是3方面的原因:

  • 由于出版社在北京,疫情管控北京最严格,因此出版社方面的效率无法保证。
  • 国家出版局对图书审核更加严格,需要更多的时间。
  • 相关的Java包是否能够及时升级推出。

到时候出版了,再通知大家,希望大家能够多多支持。

由于新书很晚上,因此我这里搞个免费的专栏,让大家能够及时学习Spring Boot 3.x,这里我将坚持全部免费的原则。当然专栏不会像书那么多的局限,但是也不会太系统,主要给大家学习到最新技术。

看看有没有必要加入些课程,只是我普通话和英文一般,所以讲得不太好,希望大家包涵包涵。

《深入浅出Spring Boot  2.x》中的内容,有些已经不再适应新技术的要求,因此替换掉它已经是十分必要了。与此同时,我也打算使用Java 8以后的新语法,关于这些可以参考文章。

SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道!

1.4 来个入门实例

首先先建Spring Boot工程,用IDEA或者Eclipse都可以,大家自行决定。

是引入对应的包,这里以Maven为例,代码如下。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>3.0.0</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>springboot3</groupId>
  12. <artifactId>chapter1</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>chapter1</name>
  15. <description>chapter1</description>
  16. <properties>
  17. <java.version>17</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-web</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-test</artifactId>
  31. <scope>test</scope>
  32. </dependency>
  33. </dependencies>
  34. <build>
  35. <plugins>
  36. <plugin>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-maven-plugin</artifactId>
  39. </plugin>
  40. </plugins>
  41. </build>
  42. </project>

这里用了3.0.0的正式版,还是比较简单的,当然也可以用Gradle,只是目前大家都在用Maven,我就继续用Maven了。(其实我更愿意用Gradle,拥抱新技术是我们的潮流)

跟着编写一个简单的控制器,如下。

  1. package com.learn.chapter1.main;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import org.springframework.boot.SpringApplication;
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.ResponseBody;
  9. // Spring MVC控制器
  10. @Controller
  11. // 启用Spring Boot自动装配
  12. @SpringBootApplication
  13. public class Chapter1Main {
  14. @RequestMapping("/test")
  15. @ResponseBody
  16. public Map<String, String> test() {
  17. var map = new HashMap<String, String>();
  18. map.put("key", "value");
  19. return map;
  20. }
  21. public static void main(String[] args) throws Exception {
  22. SpringApplication.run(Chapter1Main.class, args);
  23. }
  24. }

这样就能够以Java Appliction的形式运行这个文件,启用Spring Boot应用了。

然后用浏览器打开地址:

http://localhost:8080/test

可以看到如下结果。

测试结果

可见,我们已经成功地运行了Spring Boot。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/121012
推荐阅读
相关标签
  

闽ICP备14008679号