本 Spring 框架基于 5.3.6 版本撰写的,Spring 5 中新增了一些新特性,如下:

  1. JDK 版本升级

    Spring 5 框架的代码基于 Java8,在使用时,JDK 的版本至少需要 8 以上,将之前版本中不建议使用的类和方法都进行了删除。

  2. 通用日志

    Spring 5 框架自带了通用的日志封装,移除了 Log4jConfigListener,官方整合并建议使用 Log4j2

  3. 支持 @Nullable 注解

    在平时使用中,遇到一个空的值,那么可能报空指针异常,加了这个注解后,就不会出现异常了。

    • 放在方法上,表示方法返回值可以为空
    • 放在属性上,表示属性值可以为空
    • 放在参数前,表示参数值可以为空
  4. 支持函数式编程

    也就是能通过使用 Lambda 表达式完成一些操作,例如:

    public static void main(String[] args) {
        //1 创建 GenericApplicationContext 对象
        GenericApplicationContext context = new GenericApplicationContext();
        //2 调用 context 的方法对象注册
        context.refresh();
        context.registerBean("user", User.class, () -> new User());
        //3 获取在 spring 注册的对象
        User user = (User) context.getBean("user1");
        System.out.println(user);
    }
  5. 整合了 JUnit5

    使用 JUnit4 时的单元测试如下:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:bean1.xml")
    public class TestJunit4 {
        @Autowired
        private User user;
    
        @Test
        public void test01() {
            System.out.println(user);
        }
    }

    使用 JUnit5:

    @SpringJUnitConfig(locations = "classpath:bean1.xml")
    public class TestJunit5 {
        @Autowired
        private User user;
    
        @Test
        public void test01() {
            System.out.println(user);
        }
    }

    JUnit4 中的 @Test 注解是 org.junit.jupiter.api.Test,而 JUnit5 是 org.junit.Test

  6. WebFlux 需要 SpringMVC、SpringBoot 等知识才可以较为顺利的学习下去,目前在这里就不继续探讨了,说不准有一天我可能就会补上了。