参考中译版官方文档:https://www.cntofu.com/book/95/readme.html

概述

1、整个 Spring5 框架的代码基于 Java8,运行时兼容 JDK9, 许多不建议使用的类和方法在代码库中删除。
2、 Spring 5.0 框架自带了通用的日志封装
Spring5 已经移除 Log4jConfigListener,官方建议使用 Log4j2,Spring5 框架整合 Log4j2

准备工作

第一步 引入 jar 包:
image.png
第二步 创建 log4j2.xml 配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. 日志级别以及优先级排序:
  4. OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
  5. -->
  6. <!--
  7. Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,
  8. 当设置成trace时,可以看到log4j2内部各种详细输出
  9. -->
  10. <configuration status="DEBUG">
  11. <!--先定义所有的appender-->
  12. <appenders>
  13. <!--输出日志信息到控制台-->
  14. <console name="Console" target="SYSTEM_OUT">
  15. <!--控制日志输出的格式-->
  16. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
  17. </console>
  18. </appenders>
  19. <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
  20. <!--root:用于指定项目的根日志,如果没有单独指定Logger,则会使用root作为默认的日志输出-->
  21. <loggers>
  22. <root level="info">
  23. <appender-ref ref="Console"/>
  24. </root>
  25. </loggers>
  26. </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

待完善。