1. 程式人生 > 其它 >14.Spring5 框架新功能

14.Spring5 框架新功能

目錄

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();
    }
}