Spring 5(六)新功能

132 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的4天,点击查看活动详情

六.Spring 5新功能

  • 整个Spring5框架的代码基于Java8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中删除。

  • Spring5.0框架自带了通用的日志封装

    • Spring5已经移除Log4jConfigListener,官方建议使用Log4j2

    • Spring5框架整合Log4j2

      第一步 引入jar包 image-20221118121622826 第二步 创建Log4j2.xml配置文件

      <?xml version="1.0"encoding="UTF-8"?>
      <!--日志级别以及优先级排序:OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>AII-->
      <!--Confiquration后面的status.用于设置log4i2自身内部的信息输出,可以不设置,当设置成trace时,可以看到1og42内部
      各种详细输出-->
      <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>
      
  • Spring5框架核心容器支持@Nullable注解

    • @Nullable注解可以使用在方法上面,属性上面,参数上面,表示方法返回可以为空,属性值可以为空,参数值可以为空
    • 注解用在方法上面,方法返回值可以为空 image-20221118193332701
    • 注解使用在方法参数里面,方法参数可以为空 image-20221118193430779
    • 注解使用在属性上面,属性值可以为空 image-20221118193529502
  • Spring5核心容器支持函数式风格GenericApplicationContext

    @Test
    public void testGenericApplicationContext(){
        //1 创建GenericApplicationContext对象
        GenericApplicationContext context = new GenericApplicationContext();
        //2 调用context的方法对象注册
        context.refresh();
        context.registerBean(User.class,()->new User());
        //3 获取在spring注册的对象
        User user =(User) context.getBean("com.gbx.spring5.test.User");
        System.out.println(user);
    }
    
  • Spring5支持整合JUnit5

    • 整合JUnit4 第一步 引入Spring相关针对测试依赖 image-20221118205937465 第二步创建测试类,使用注解方式完成

      @RunWith(SpringJUnit4ClassRunner.class)//单元测试框架
      @ContextConfiguration("classpath:bean1.xml")//加载配置文件
      public class JTest4 {
          @Autowired
          private UserService userService;
      ​
          @Test
          public void test1(){
              userService.accountMoney();
          }
      }
      
    • Spring5整合JUnits5 第一步 引入JUnit5的jar包 image-20221118212554042 第二步 创建测试类,使用注解完成

      @ExtendWith(SpringExtension.class)
      @ContextConfiguration("classpath:bean1.xml")
      public class JTest5 {
          @Autowired
          private UserService userService;
      ​
          @Test
          public void test1(){
              userService.accountMoney();
          }
      }
      
    • 使用一个复合的注解替代上面两个注解完整整合

      @SpringJUnitConfig(locations = "classpath:bean1.xml")
      public class JTest5 {
          @Autowired
          private UserService userService;
      ​
          @Test
          public void test1(){
              userService.accountMoney();
          }
      }