我这样回答了Spring 5的新特性,面试官对我刮目相看

这篇具有很好参考价值的文章主要介绍了我这样回答了Spring 5的新特性,面试官对我刮目相看。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前面的系列文章中,文哥给大家讲解了两个非常核心的思想,那就是Spring的IOC和AOP思想。想必大家对于IOC和AOP的思想有了很深刻的理解。

在今天的文章里面,文哥给大家讲解Spring5的一些新特性,希望大家对Spring5框架的新特性有所了解。好了,现在大家就跟随文哥的脚步,来看看Spring5的新特性有哪些吧!
我这样回答了Spring 5的新特性,面试官对我刮目相看

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>

第三步:测试日志整合是否生效

我们随便编写并运行一个测试类,查看控制台效果:

我这样回答了Spring 5的新特性,面试官对我刮目相看

到这里我们Spring5整合Log4j2日志框架就成功了。

2.@Nullable注解

@Nullable注解是Spring5框架提供出来的一个新的注解。可以使用在方法上面,也可以应用到属性和参数上面,应用到方法上面表示方法返回可以为空,应用到属性上面表示属性值可以为空,应用到参数上面表示参数值可以为空。接下来文哥给大家演示一下注解的使用:

(1) 应用到方法上面。

我们可以查阅Spring的官方源码,在源码中关于@Nullable注解的使用地方有很多,在这里我们看看ApplicationContext的源码:

我这样回答了Spring 5的新特性,面试官对我刮目相看

@Nullable注解修饰的getParent方法,说明这个方法的返回值是可以为NULL的。

(2) 应用到方法形式参数里面。

我们还是翻阅Spring的官方源码,这次我们查看AnnotationConfigApplicationContext类里面有一个注册bean的方法:

我这样回答了Spring 5的新特性,面试官对我刮目相看

这意味着@Nullable注解修饰的beanName参数,外界在传值的时候可以传入NULL。

(3) 应用到属性上面

我们还是翻阅Spring的官方源码,现在我们查看ClassPathXmlApplicationContext类。

我这样回答了Spring 5的新特性,面试官对我刮目相看

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的官方文档。

好了关于Spring5的新特性文哥就给大家介绍到这里了。我们下期文章再见!文章来源地址https://www.toymoban.com/news/detail-445574.html

到了这里,关于我这样回答了Spring 5的新特性,面试官对我刮目相看的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT有用到知识图谱吗?它自己是这样回答...

    从搜索引擎到个人助手,我们每天都在使用问答系统。问答系统必须能够访问相关的知识并进行推理。通常,知识可以隐式地编码在大型语言模型(LLMs)中,例如ChatGPT、T5 和LaMDA 等大型语言模型,这些模型在未结构化文本上进行预训练,或者显式地表示在知识图谱(KGs)中

    2023年04月20日
    浏览(30)
  • 100个变态的软件测试面试题及答案!——看完变态面试官对你竖起大拇指!

    【纯干货!!!】花费了整整3天,整理出来的全网最实用软件测试面试大全,一共30道题目+答案的纯干货,希望大家多多支持,建议 点赞!!收藏!!长文警告,全文共12000+字,涵盖软件测试面试可能遇到的所有问题,希望对大家有帮助,不过大家最好不要硬背,实战大于

    2023年04月19日
    浏览(33)
  • 阿里一面:MySQL 单表数据最大不要超过多少行?为什么?这样回答满分!

    来源:https://my.oschina.net/u/4090830/blog/5559454 作为在后端圈开车的多年老司机,是不是经常听到过,“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”,“你这个表数据都马上要到 2000w 了,难怪查询速度慢” 这些名言民语就和 “群里只讨论技术,不开车,

    2024年02月06日
    浏览(41)
  • JAVA 8 的新特性

    简介: 前段时间面了完美世界,被问到Java8的新特性,在此特地记录一下,虽然现在Java的版本可能已经很高了,但是Java8的新特性依然值得学习一下! 1. Lambda 表达式 2. Stream流 3. Optional 4. Java 8 默认方法 5. 函数式接口 6. 方法引用 lambda表达式的一种简化写法 7. Base64编码 8. 链式

    2024年02月10日
    浏览(30)
  • CSS3 的新特性

    CSS3 给我们新增了选择器,可以更加便捷,更加自由的选择目标元素。 属性选择品可以根据元素 特定属性 的来选择元素。这样就可以不用借助于类或者id选择器。 选择符 简介 E[att] 选择具有 att 属性的E 元素。 E[att=\\\"val\\\"] 选择具有 att 属性且厲性值等于 val 的E 元素。 E[att^=\\\"v

    2024年02月06日
    浏览(37)
  • css3的新特性

    动画效果 过渡 transition 鼠标放上去瞬间变大 过渡是变大的过程慢慢变化 第一个参数:对哪些值进行过渡。all为hover中所有,也可以指定属性 第二个参数:让动画过渡多长时间。要添加单位(s秒) 第三个参数:运动轨迹。linear表示线性,即匀速过渡 第四个参数:延时时间。

    2024年02月16日
    浏览(29)
  • Vue3的新特性

    Vue 3的新特性包括: Composition API:一种新的API风格,可将有关组件功能的代码逻辑封装在单独的函数中,从而更好地管理和重用代码。 Teleport:可以让组件在DOM层次结构中的任何位置渲染。 Suspense: 一种新的异步渲染模式,可以优化应用程序的性能。 更快的渲染速度:Vue

    2024年02月05日
    浏览(35)
  • Vue 3的新特性介绍

    Vue是一款流行的JavaScript框架,用于构建现代Web应用程序。Vue 2已经成为前端开发者的首选框架之一,但是在2020年,Vue 3正式发布,带来了一系列重要的新特性和功能。本文将介绍Vue 3相对于Vue 2的新特性和功能,以及它们对前端开发的影响。 Composition API是Vue 3最引人注目的新特

    2023年04月18日
    浏览(32)
  • Java 17 版本的新特性

    Java 17 是2021年9月发布的最新版本,其中包含了很多新特性和改进,这些新特性和改进将进一步提高 Java 语言的性能和可用性。在这篇博客中,我们将介绍 Java 17 中的一些重要新特性。 摘要: Java 17是Java编程语言的一个新版本,它引入了一些新的特性和改进,使得Java编程更加

    2024年02月09日
    浏览(40)
  • 2. CSS3的新特性

    ●新增的CSS3特性有兼容性问题, ie9+才支持 ●移动端支持优于PC端 ●不断改进中 ●应用相对广泛 ●现阶段主要学习: 新增选择器和盒子模型以及其他特性 CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素: 1.属性选择器 2.结构伪类选择器 3.伪元素选择器 属性

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包