Spring5新特性
一、基于Java8
- 基于Java8,运行时兼容JDK9,许多不建议使用的类和方法在代码中删除
二、Spring5中自带了通用的日志封装
-
Spring5已将移除了Log4jConfigListener,官方建议使用Log4j2
-
Spring5框架整合Log4j2
-
导入整合Log4j2相关的jar包
-
创建log4j2.xml配置文件
① 设置status的优先级,越往右则优先级别越高,显示的内容越多
② 设置日志输出的格式
<?xml version="1.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>
三,Spring5框架核心容器支持@Nullable注解
- @Nullable注解可用在方法、属性、参数上面,表示方法返回可以为空、属性值可以为空、参数值可以为空
四、Spring5核心容器支持函数式风格GenericApplicationContext
-
函数式风格创建对象,交给spring进行管理
public class TestAccount { @Test public void genericApplicationContextTest() { // 1.创建GenericApplicationContext对象 GenericApplicationContext context = new GenericApplicationContext(); // 2.调用context内的registerBean方法进行对象注册 context.refresh(); context.registerBean("testAccount",TestAccount.class, () -> new TestAccount()); // 3.获取在spring注册的对象 TestAccount testAccount =(TestAccount) context.getBean("testAccount"); System.out.println("testAccount = " + testAccount); } }
五、整合Junit
-
导入jar包
-
整合Junit4
import org.junit.Test; // 指定单元测试Junit的版本 @RunWith(SpringJUnit4ClassRunner.class) // 指定配置文件 @ContextConfiguration("classpath:bean1.xml") public class Junit4Test { @Autowired private UserService userService; @Test public void test1() { userService.accountMoney(); } }
-
整合Junit5
import org.junit.jupiter.api.Test; // 整合Junit5所用的注解 @ExtendWith(SpringExtension.class) // 装载配置文件 @ContextConfiguration("classpath:bean1.xml") public class Junit5Test { @Autowired private UserService userService; @Test public void test1() { userService.accountMoney(); } }
-
复合注解@SpringConfig,针对 Junit5
import org.junit.jupiter.api.Test; @SpringJUnitConfig(locations = "classpath:bean1.xml") public class Junit5Test { @Autowired private UserService userService; @Test public void test1() { userService.accountMoney(); } }