目前在将作品升级到《深入浅出Spring Boot 3.x》,希望大家多多支持。

Posted ykzhen2015

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目前在将作品升级到《深入浅出Spring Boot 3.x》,希望大家多多支持。相关的知识,希望对你有一定的参考价值。

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

如今随着时间到了2021年,Jakarta EE也得到了长足的发展,加上Java 8语法的严重落后于其他语言,导致了Java语言发展也遇到了瓶颈。因此在Spring 6中,就已经决定基于Java 17+和Jakarta EE 9进行开发,而新版的Spring Boot 3.x是基于Spring 6进行开发,因此也要求基于Java 17+和Jakarta EE 9。应该说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的版本。

据Spring Boot官方称,Spring Boot 3.0的正式版本预计到2022年11月中下旬发布正式版。所以已经迫在眉睫,我打算在2023年3到5月发布新书,之所以这么久才上,主要是出版社审核变慢,其实也不能怪出版社,这是3方面的原因:

  • 疫情导致北京管控严格,出版社方面的效率无法保证。
  • 国家出版局对图书审核更加严格,需要更多的时间。
  • 相关的Java包是否能够及时升级推出,比如现在MyBatis的包,还无法支持Spring Boot 3.0的快照版。

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

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

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

但是更新书籍的问题也遇到了,最主要的是包不兼容,比如MyBatis的包和Spring Boot 3.0快照版无法兼容,导致整合MyBatis出现错误。

下面,我已经完成了第一章的更新,给出一些代码,如下。

首先是Maven引入对应的包,代码如下。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.0-SNAPSHOT</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.chapter1</groupId>
	<artifactId>chapter1</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>chapter1</name>
	<description>chapter1 project for Spring Boot</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	<repositories>
		<repository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>spring-snapshots</id>
			<name>Spring Snapshots</name>
			<url>https://repo.spring.io/snapshot</url>
			<releases>
				<enabled>false</enabled>
			</releases>
		</repository>
	</repositories>
	<pluginRepositories>
		<pluginRepository>
			<id>spring-milestones</id>
			<name>Spring Milestones</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
		<pluginRepository>
			<id>spring-snapshots</id>
			<name>Spring Snapshots</name>
			<url>https://repo.spring.io/snapshot</url>
			<releases>
				<enabled>false</enabled>
			</releases>
		</pluginRepository>
	</pluginRepositories>

</project>

由于是快照版,所以需要编写的东西比较多。

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

package com.learn.chapter1.main;

import java.util.HashMap;
import java.util.Map;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

// Spring MVC控制器
@Controller
// 启用Spring Boot自动装配
@SpringBootApplication
public class Chapter1Application 
    @RequestMapping("/test")
    @ResponseBody
    public Map<String, String> test() 
        var map = new HashMap<String, String>();
        map.put("key", "value");
        return map;
    

    public static void main(String[] args) throws Exception 
        SpringApplication.run(Chapter1Application.class, args);
    

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

然后用浏览器打开地址:

http://localhost:8080/test

可以看到如下结果。

测试结果

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

以上是关于目前在将作品升级到《深入浅出Spring Boot 3.x》,希望大家多多支持。的主要内容,如果未能解决你的问题,请参考以下文章

升级到最新版本时 Spring Boot 国际化不起作用

Spring Boot 升级后“找不到提供程序 com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule”

深入Spring Boot: 怎样排查 java.lang.ArrayStoreException

雪球 Spring Boot 2.0 升级经验谈

给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑

在将应用程序(spring boot)部署到谷歌应用程序引擎时,没有使用sql db?