参考中译版官方文档:https://www.cntofu.com/book/95/readme.html
概述
1、整个 Spring5 框架的代码基于 Java8,运行时兼容 JDK9, 许多不建议使用的类和方法在代码库中删除。
2、 Spring 5.0 框架自带了通用的日志封装
Spring5 已经移除 Log4jConfigListener,官方建议使用 Log4j2,Spring5 框架整合 Log4j2
准备工作
第一步 引入 jar 包:
第二步 创建 log4j2.xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--
日志级别以及优先级排序:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
-->
<!--
Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,
当设置成trace时,可以看到log4j2内部各种详细输出
-->
<configuration status="DEBUG">
<!--先定义所有的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 log4j2");
log.warn("hello log4j2");
}
}
新特性
Spring5 框架核心容器支持@Nullable 注解
@Nullable
注解应用:
- 用在方法上面,表示方法返回值可以为空。
- 用在方法参数里面,表示方法参数可以为空。
- 用在属性上面,属性值可以为空。
Spring5 核心容器支持函数式风格
// 函数式风格创建对象,交给Spring进行管理
@Test
public void test4() {
// 1.创建GenericApplicationContext对象
GenericApplicationContext context = new GenericApplicationContext();
// 2.调用context的方法对象注册
context.refresh();
context.registerBean("user", User.class, () -> new User());
// 3.获取在spring注册的对象
// User user = (User) context.getBean("com.test.User");
User user = (User) context.getBean("user");
System.out.println(user);
}
Spring 5 支持整合 JUnit 5
使用前,先导入Junit 5 ,IDEA直接 alt+enter 可以选择添加JUnit 5
1、整合Junit 4
@RunWith(SpringJUnit4ClassRunner.class) // 单元测试框架
@ContextConfiguration("classpath:bean1.xml") // 加载配置文件
public class JUnit4Test {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}
2、整合JUnit 5(两种方式)
//@ExtendWith(SpringExtension.class)
//@ContextConfiguration("classpath:bean1.xml")
@SpringJUnitConfig(locations = "classpath:bean1.xml")
public class JUnit5Test {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}
Webflux
待完善。