14.Spring5 框架新功能
阿新 • • 發佈:2021-07-01
目錄
Spring5 框架新功能
1、 Log4j2日誌
1、整個 Spring5 框架的程式碼基於 Java8,執行時相容 JDK9, 許多不建議使用的類和方法在程式碼庫中刪除
2、Spring 5.0 框架自帶了通用的日誌封裝
(1)Spring5 已經移除 Log4jConfigListener,官方建議使用 Log4j2
(2)Spring5 框架整合 Log4j2
建立 log4j2.xml 配置檔案
<?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>
2、 Spring5 框架核心容器支援@Nullable 註解
(1) @Nullable 註解可以使用在方法上面,屬性上面,引數上面,表示方法返回可以為空,屬性值可以為空,引數值可以為空
(2)註解用在方法上面,方法返回值可以為空
public class User {
@Nullable
String getId();
}
(3)註解使用在方法引數裡面,方法引數可以為空
public <T> void registerBean(@Nullable String beanName) { this.reader.registerBean(beanName); }
(4)註解使用在屬性上面,屬性值可以為空
public class User {
@Nullable
private String bookName;
}
3、 Spring5 核心容器支援函式式風格 GenericApplicationContext
//函式式風格建立物件,交給 spring 進行管理
@Test
public void testGenericApplicationContext() {
//1 建立 GenericApplicationContext 物件
GenericApplicationContext context = new GenericApplicationContext();
//2 呼叫 context 的方法物件註冊
context.refresh(); // 重新整理上下文環境
// context.registerBean(User.class,() -> new User());
context.registerBean("user1",User.class,() -> new User());
//3 獲取在 spring 註冊的物件
// User user = (User)context.getBean("com.atguigu.spring5.test.User");
User user = (User)context.getBean("user1");
System.out.println(user);
}
4、 Spring5 支援整合 JUnit5
(1)整合 JUnit4
第一步 引入 Spring 相關針對測試依賴
第二步 建立測試類,使用註解方式完成
@RunWith(SpringJUnit4ClassRunner.class) //單元測試框架
@ContextConfiguration("classpath:bean1.xml") //載入配置檔案
public class JTest4 {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}
(2) Spring5 整合 JUnit5
第一步 引入 JUnit5 的 jar 包
第二步 建立測試類,使用註解完成
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:bean1.xml")
public class JTest5 {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}
(3)使用一個複合註解替代上面兩個註解完成整合
@SpringJUnitConfig(locations = "classpath:bean1.xml")
public class JTest5 {
@Autowired
private UserService userService;
@Test
public void test1() {
userService.accountMoney();
}
}