在前面的系列文章中,文哥给大家讲解了两个非常核心的思想,那就是Spring的IOC和AOP思想。想必大家对于IOC和AOP的思想有了很深刻的理解。
在今天的文章里面,文哥给大家讲解Spring5的一些新特性,希望大家对Spring5框架的新特性有所了解。好了,现在大家就跟随文哥的脚步,来看看Spring5的新特性有哪些吧!
Spring5框架新特性概述
Spring5最令人兴奋的消息就是它提出了响应式的编程模型(Reactive Programming)。Spring5 框架同时兼容 Java8 和 JDK 9。提供了一种颠覆于传统WEB开发方式的编程风格。对于Spring5的升级,文哥给大家罗列了以下方面:
- 基于JDK8,兼容于JDK9。
- 对Kotlin支持。
- 响应式的编程风格。
- 对函数式WEB框架的支持。
- 对Junit5的支持。
在这里文哥重点对响应式的编程风格和函数式的WEB框架支持给大家做一下介绍:
1.响应式的编程风格
响应式编程是Spring Framework 5.0最重要的更新之一。专注于构建对事件做出响应的WEB应用程序。Java8本身没有对响应式编程风格进行支持,但是一些其他的框架提供了对响应是编程风格的支持。文哥在这里给大家罗列一下:
- Reactive Streams:尝试定义与语言无关的响应性API。
- Reactor:Spring Pivotal团队提供的响应式编程的Java实现。
- Spring WebFlux:启用基于响应式编程的Web应用程序的开发。提供类似于Spring MVC的编程模型。
2.函数式Web框架
除了响应式功能之外,Spring5 还提供了一个函数式Web框架。它提供了使用函数式编程风格来定义endpoints的功能。该框架引入了两个基本组件:HandlerFunction 和 RouterFunction。HandlerFunction 表示处理接收到的请求并生成响应的函数。
RouterFunction 替代了 @RequestMapping 注解。它用于将接收到的请求路由到处理函数。对于响应式编程风格和函数式WEB框架的支持,由于我们没有给小伙伴们介绍SpringMVC的知识,所以这部分内容我们放在SpringMVC系列文章中给大家介绍。接下来文哥给大家介绍Spring5中的其他新特性。
Spring5框架新特性
1.Spring5整合日志框架
Spring5本身提供了对日志封装的解决方案,官方建议我们使用Log4j2。接下来文哥就给大家演示Spring5对于日志框架的整合。
第一步:引入相关的依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
第二步:创建日志配置文件
我们在项目里面创建日志文件,文件的名称叫log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration status="DEBUG">
<appenders>
<console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</console>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
第三步:测试日志整合是否生效
我们随便编写并运行一个测试类,查看控制台效果:
到这里我们Spring5整合Log4j2日志框架就成功了。
2.@Nullable注解
@Nullable注解是Spring5框架提供出来的一个新的注解。可以使用在方法上面,也可以应用到属性和参数上面,应用到方法上面表示方法返回可以为空,应用到属性上面表示属性值可以为空,应用到参数上面表示参数值可以为空。接下来文哥给大家演示一下注解的使用:
(1) 应用到方法上面。
我们可以查阅Spring的官方源码,在源码中关于@Nullable注解的使用地方有很多,在这里我们看看ApplicationContext的源码:
@Nullable注解修饰的getParent方法,说明这个方法的返回值是可以为NULL的。
(2) 应用到方法形式参数里面。
我们还是翻阅Spring的官方源码,这次我们查看AnnotationConfigApplicationContext类里面有一个注册bean的方法:
这意味着@Nullable注解修饰的beanName参数,外界在传值的时候可以传入NULL。
(3) 应用到属性上面
我们还是翻阅Spring的官方源码,现在我们查看ClassPathXmlApplicationContext类。
3.GenericApplicationContext 函数式风格的容器
在Spring5里面,还支持使用函数式的风格创建对象,并将对象交给容器管理,现在文哥给大家简单演示一下:4
@Test
public void testGenericApplicationContext() {
//1 创建 GenericApplicationContext 对象
GenericApplicationContext context = new GenericApplicationContext();
//2 调用 context 的方法对象注册
context.refresh();
context.registerBean("account1", Account.class,() -> new Account(1002,"kobe",500.0));
//3 获取在 spring 注册的对象
Account user = (Account) context.getBean("account1");
System.out.println(user);
}
总结
通过这篇文章,文哥给大家介绍了Spring5的一些新特性。当然在本篇文章中,对于新特性的支持文哥仅仅只是抛砖引玉做了一些介绍
如果大家还想对Spring5的新特性有更多的了解,还请大家多多翻阅Spring的官方文档。文章来源:https://www.toymoban.com/news/detail-445574.html
好了关于Spring5的新特性文哥就给大家介绍到这里了。我们下期文章再见!文章来源地址https://www.toymoban.com/news/detail-445574.html
到了这里,关于我这样回答了Spring 5的新特性,面试官对我刮目相看的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!