para培訓——SpringBoot學習(一)

SpringBoot

Spring概述

  • 輕量級
  • IOC控制反轉、DI依賴注入
  • AOP面向切面編程

配置

application.yml
application.properties

熱部署

我們在開發中反覆修改類、頁面等資源,每次修改後都是需要重新啓動才生效,這樣每次啓動都很麻煩,浪費了大量的時間。

註解

  • @SpringBootApplication是個組合註解(composed annotation),用它就相當於同時用了下面三個註解:

@SpringBootConfiguration : 用於定義一個配置類
@EnableAutoConfiguration :Spring Boot 會自動根據你jar 包的依賴來自動配置
@ComponentScan: 告訴Spring 哪個packages 的用註解標識的類會被spring自動掃描並且裝入bean 容器。

  • @EnableAutoConfiguration可以幫助SpringBoot應用將所有符合條件的@Configuration配置都加載到當前SpringBoot創建並使用的IoC容器。
  • @RestController是@ResponseBody和@Controller的縮寫

統一錯誤處理

全局異常處理 @ControllerAdvice + @ExceptionHandler

在spring 3.2中,新增了@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。
簡單的說,進入Controller層的錯誤纔會由@ControllerAdvice處理,攔截器拋出的錯誤以及訪問錯誤地址的情況@ControllerAdvice處理不了,由SpringBoot默認的異常處理機制處理。

相關鏈接:https://mp.weixin.qq.com/s?src=11&timestamp=1574824755&ver=1999&signature=PwNpIG4EyQbatDHRb78tyEdfIWNt-A03uPm0m9u5RAsaVOKPO2YpPmCy-ajbxMEmbvUgXM4cZxudCqsx0fFlwbdkLEfkt3s5vkjOZ5EQbgGvtFq6pGCQ6vwaSMfEFY&new=1

整合測試

使用spring-boot-starter-test這個包即可完成測試
鏈接:https://blog.csdn.net/zy345293721/article/details/90520273

日誌管理

logback

靜態資源

靜態資源是哪些呢?
首頁
自己的HTML,CSS和JS文件
引用的外部的CSS,JS或者HTML文件
favicon.ico
模板文件
關鍵靜態文件的配置,主要封裝在下面兩個類中:
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
org.springframework.boot.autoconfigure.web.ResourceProperties
Spring Boot約定的靜態文件的路徑就是類路徑下的這幾個

  1. classpath:/META-INF/resources/
  2. classpath:/resources/
  3. classpath:/static/
  4. classpath:/public/

自定義消息轉換器

自定義消息轉換器
 自定義消息換換器,我們只需要在配置類@Configuration的類中添加消息轉換器的@Bean加入spring容器,就會被SpringBoot自動加入到容器中。
例如:

@Bean
public StringHttpMessageConverter stringHttpMessageConverter(){
    StringHttpMessageConverter converter = new StringHttpMessageConverter(
                Charset.forName("UTF-8"));
    return converter;
}

自定義攔截器

配置攔截器也很簡單,Spring 爲什麼提供了基礎類WebMvcConfigurerAdapter ,我們只需要重寫 addInterceptors 方法添加註冊攔截器。
實現自定義攔截器只需要3步:
1、創建我們自己的攔截器類並實現 HandlerInterceptor 接口。
2、創建一個Java類繼承WebMvcConfigurerAdapter,並重寫 addInterceptors 方法。
3、實例化我們自定義的攔截器,然後將對像手動添加到攔截器鏈中(在addInterceptors方法中添加)

public class MyInterceptor1 implements HandlerInterceptor {
 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        System.out.println(">>>MyInterceptor1>>>>>>>在請求處理之前進行調用(Controller方法調用之前)");
 
        return true;// 只有返回true纔會繼續向下執行,返回false取消當前請求
    }
 
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println(">>>MyInterceptor1>>>>>>>請求處理之後進行調用,但是在視圖被渲染之前(Controller方法調用之後)");
    }
 
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println(">>>MyInterceptor1>>>>>>>在整個請求結束之後被調用,也就是在DispatcherServlet 渲染了對應的視圖之後執行(主要是用於進行資源清理工作)");
    }
 

全局異常處理

創建基於 @RestControllerAdvice 全局異常類示例
@RestControllerAdvice 註解是 Spring Boot 用於捕獲 @Controller 和 @RestController 層系統拋出的異常(注意,如果已經編寫了 try-catch 且在 catch 模塊中沒有使用 throw 拋出異常, 則 @RestControllerAdvice 捕獲不到異常)。
@ExceptionHandler 註解用於指定方法處理的 Exception 的類型
鏈接:https://www.cnblogs.com/fishpro/p/11179688.html

整合JSP

鏈接:https://mp.weixin.qq.com/s?src=11&timestamp=1574826150&ver=1999&signature=gPoaGZWU6g946YGVZguHcffBP8qKXO6RLZtdA83DjdvJAV2BZuIhZdOyomEGClH1hLDBhWNecw0D6vfZYLAYy3t5WoTZv-CPz1VZ2ySEjisJ9TL1pj*ikbpTuMextO&new=1

整合QuartZ

一、Quartz簡介:
a. Quartz 是一個完全由 Java 編寫的開源作業調度框架,爲在 Java 應用程序中進行作業調度提供了簡單卻強大的機制。
b. Quartz 可以與 J2EE 與 J2SE 應用程序相結合也可以單獨使用。
c. Quartz 允許程序開發人員根據時間的間隔來調度作業。
d. Quartz 實現了作業和觸發器的多對多的關係,還能把多個作業與不同的觸發器關聯。

二、Quartz 核心概念
1、Job
表示一個工作,要執行的具體內容。此接口中只有一個方法,如下:void execute(JobExecutionContext context)
2、JobDetail
表示一個具體的可執行的調度程序,Job 是這個可執行程調度程序所要執行的內容,另外 JobDetail 還包含了這個任務調度的方案和策略。
3、Trigger
代表一個調度參數的配置,什麼時候去調。
4、Scheduler
代表一個調度容器,一個調度容器中可以註冊多個 JobDetail 和 Trigger。當 Trigger 與 JobDetail 組合,就可以被 Scheduler 容器調度了。
連接:https://mp.weixin.qq.com/s?src=11&timestamp=1574826191&ver=1999&signature=H62trH9WokmrtCeSK-j1ieSBMZTv5TuGByEqYS1XDC0037ghVKTKqbVb1oimZcW4QTcQBzZly2zYoD6WNn6cNnTMfviM40kz5d4D1el1o*haJeY-0cIU962LBO2V9S&new=1

整合JPA-Hibernate

https://mp.weixin.qq.com/s?src=11&timestamp=1574826244&ver=1999&signature=YDJUxTCpMElKCKgxcR5g0t0htf6dsf4fSWPXQyk-LK1Mk20f6wu2fuBhcUiOTrZU1PGZ90fFSgMNF9IbVTJiuSaVYoylnaE3EZmiGGwqqiVpWC-IKeLoq5lxBX9R1x&new=1

文件上傳

https://mp.weixin.qq.com/s?src=11&timestamp=1574826268&ver=1999&signature=gUaat1p*hH5nNQCBkUdZsekBAZV2C2oxU6lWhlOfuGtF8N08tu836Sm3Z60IlLdPXncurcpEUylgwm8Jm6yz1RSWkqzeSDNdI1KHFh435WADs3UtSCfRb26OaHJueu&new=1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章