Spring6全面详解
自2022年11月,Spring6正式发布。在Spring6中,对于JDK的要求最低为 17+。(17 - 19)
部分文本摘抄于尚硅谷视频(bilibili)做了一定的排版和个人的理解。如果不是很熟悉,可以去看
Spring5全面详解 内容大约十万字左右, 对于Spring5的使用整理的较为全面,也都有解释部分,Spring6只是看以下是否具有一些特性上的更换。所以可能并没有Spring5的内容详细。但本篇大约在8-10万字左右。持续进行编写。
1. Spring6概述
1.1 Spring核心模块
在spring6中,Core的核心模块有以下内容
- IOC
- Container
- Events
- Resources
- i18n
- Validation
- Data Binding
- Type Conversion
- SpEL
- 10.AOP
- AOT(静态编译)
1.1.1 Spring Core
SpringCore提供了IOC,DI,Bean配置装载创建的核心实现。核心概念:Beans,BeanFactory,BeanDefinitons,ApplicationContext。
- Spring-Core(IOC和DI的基本实现)
- Spring-Beans (BeanFactory和Bean的装配管理(BeanFactory))
- Spring-Context(SpringContext上下文,即IOC容器(ApplicationContext)
- Spring-Expression (Spring表达式语言)
1.1.2 Spring Aop
- Spring-Aop 面向切面编程的应用模块,整合ASM,CGLib,JDK Proxy。
- Spring-Aspect 集成AspectJ,Aop应用框架。
- Spring-Instrument 动态Class Loading模块。
1.1.3 Spring Data Access
- Spring-JDBC 属于是Spring对Jdbc的封装,用于简化JDBC的使用方法。
- Spring-Orm 是Java对象与数据库数据映射的框架。
- Spring-Oxm 是对象与Xml文件的映射框架。
- Spring-Jms 是Spring对 Java Message Service(Java消息服务)的封装,用于服务间的相互通信。
- Spring-Tx 是Spring的事务管理。
1.1.4 Spring Web
- Spring-Web 是最基础的Web支持,建立于Spring-Context之上,通过Servlet和Listener来初始化Ioc容器。
- Spring-WebMvc 实现了Web Mvc。
- Spring-WebSocket 与前端的双工通信协议。
- Spring-WebFlux 是Spring5.0+提供的,用于取代传统是Java Servlet,非阻塞式Reactive Web框架,异步,非阻塞,事件驱动服务。
1.1.5 Spring Message
- Spring-Messaging 是Spring4.0+提供的,用于为Spring集成一些基础的报文传送服务。
1.1.6 Spring Test
- Spring-Test 对于测试的支持,主要是针对于Junit的封装。
2. Spring6体验
2.1 引入Spring相关的依赖需求
<dependencies>
<!-- 引入spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.3</version>
</dependency>
<!-- 引入Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- 引入LomBok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
2.2 创建实体类和对应的XML配置文件
新建一个包,里面包含一个User实体类。 pojo -> User.java。然后User内含有以下代码。
package org.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@AllArgsConstructor
@NoArgsConstructor
@Data
@ToString
public class User {
private String username;
private String password;
private Integer age;
private String phoneNumber;
}
然后去创建对应的Spring配置文件。可以在Idea中快捷去创建对应的配置文件。右键resources的包,然后new —>
XML Configuration File。即可。创建完成后, 使Spring对我们的User类进行托管。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="org.example.pojo.User">
<property name="username" value="张三" />
<property name="password" value="123456" />
<property name="age" value="18" />
<property name="phoneNumber" value="12368965432" />
</bean>
</beans>
在完成上述步骤后,在一个具有Main方法的类中,去进行测试。
package org.example;
import org.example.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
// 通过Xml加载获取Ioc容器对象。
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 通过Ioc容器获取Bean对象
User user = applicationContext.getBean("user", User.class);
// 打印对象内容,查看内容是否对的上。[User(username=张三, password=123456, age=18, phoneNumber=12368965432)]
System.out.println(user);
}
}