前篇
Spring5框架的新功能
1.整个Spring5框架的代码基于JDK8,运行时基于JDK9,许多不建议的类和方法在代码库中删除
2.Spring5.0框架自带了通用的日志封装
3.Spring5.0已经移除了Log4jConfigListener,官方建议使用Log4J2。
4.Spring5框架整合Log4J2:
第一步 引入相关jar包
第二步 编写log4j2.xml配置文件
<?xml version="2.0" encoding="utf-8" ?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,可以看到log4j2内部各种详细输出-->
<configuration status="INFO">
<!--先定义所有的appender-->
<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>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<!--root:用于指定项目的根日志,如果没有单独指定Logger,则会使用root作为默认的日志输出-->
<loggers>
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
单独测试
public class UserLog {
private static final Logger log = LoggerFactory.getLogger(UserLog.class);
public static void main(String[] args) {
log.info("hello logger");
}
}
Spring5框架核心容器支持@Nullable注解
1.@Nullable 注解可以使用在方法上面,属性上面,参数上面,表示方法返回可以为空,属性值可以为空,参数值可以为空。
(1)注解用在方法上面,方法返回值可以为空
(2)注解使用在方法参数里面,方法参数可以为空
(3))注解使用在属性上面,属性值可以为空
Spring5核心容器支持函数式风格GenericApplicationContext
//函数式风格创建对象,交给 spring 进行管理
@Test
public void testGenericApplicationContext() {
//1 创建 GenericApplicationContext 对象
GenericApplicationContext context = new GenericApplicationContext();
//2 调用 context 的方法对象注册
context.refresh();
context.registerBean("user1",User.class,() -> new User());
//3 获取在 spring 注册的对象
// User user = (User)context.getBean("com.atguigu.spring5.test.User"); User user = (User)context.getBean("user1");
System.out.println(user);
}
Spring框架的新功能-Webflux
1.SpringWebflux介绍
(1)它是Spring添加的新模块,是用于Web开发的,功能和SpringMVC类似,Webflux是使用当前一种比较流行的响应式编程出现的框架。
(2)使用传统的Web框架,比如SpringMVC,是基于Servlet实现的;Webflux是一种异步非阻塞的框架,异步非阻塞的框架在Servlet3.1以后才支持,核心是基于Reactor的相关API实现的。
(3)解释什么是异步非阻塞?
异步和同步;阻塞和非阻塞;都是针对的对象不一样。
异步和同步针对调用者:调用者发送请求,如果等待对方回应之后再去做其他事情,就叫同步;如果调用者发送请求后不等对方回应就去做其他事情,就叫异步。
阻塞和非阻塞针对被调用者:被调用者收到请求后,不管当前有没有任务在进行,立马做出该请求的回应,叫做非阻塞;如果被调用者收到请求后,有任务在进行,把当前任务做完之后再做出回应的叫做阻塞。
(4)Webflux的特点:
第一:非阻塞式,在有限的资源环境下,提高系统吞吐量和收缩性,以Reactor为基础实现响应式编程。
第二:函数式编程,Spring框架基于java8,Webflux使用函数式编程的方式实现路由请求。
(5)比较SpringMVC
第一 两个框架都可以使用注解方式,都运行在Tomcat等容器中。
第二 SpringMVC使用命令式编程,Webflux使用异步响应式编程。
后续更新...