-
這種方式,會將異常捕獲,然后返回的內容就會按照我們想要的方式返回
過程:
service里面如果驗證不通過的話,就直接往外面拋異常
controller直接調用service的方法
這個時候不需要對service的返回進行判斷,因為已經通過拋出異常來解決問題了
由expection handle來處理這個異常
查看全部 -
如果不建異常捕獲的包,拋出的內容會很多,我們需要建立捕獲異常的方法
查看全部 -
拋異常會一層一層往外拋,從service,然后接著拋到controller
查看全部 -
異常處理的統一格式,json:code, msg, data
查看全部 -
@AfterReturn注解,可以在console打印出返回的object及內容(可以像添加getter和setter一下添加toString方法)
查看全部 -
獲取類方法的方式:
首先傳參加入joinPoint
然后在輸出時使用joinPoint的方法
查看全部 -
日志的記錄方式,和在string里面進行輸出的傳參方式
查看全部 -
將@Before請求這個路徑前的作輸出改成實際要做的操作,記錄一些信息(http請求內容):
url:
注意HttpServletRequest要選javax.servlet.http
method
ip
類方法
參數
查看全部 -
采用記日志的方式打印的好處:能夠顯示(時間 INFO 進程號 【nio-端口-exec-1】 哪個方法哪個包下打的日志)
查看全部 -
實際邏輯代碼部分:
@After注解:注解括號里面的內容可以和Before注解寫得一模一樣
這里發現我們會有重復的代碼(壞處:1太low,2修改起來會特別麻煩),解決方案:用@Printcut注解單獨對相同部分定義一個方法,然后使用這個方法名作為代替放入Before和After注解里面
System.out.println的另一種方式,Logger
在類內部聲明Logger(org.slf4j: spring自帶的日志框架,底層實現使用的是logback)
在方法里面使用logger.info或者logger.error打印
查看全部 -
正式邏輯代碼:
Http請求到這些api的時候就把這些記錄下來:@Before注解表示在方法執行之前就執行這個方法(記得有個小技巧,先寫下下面的public void log(){}代碼框架,這樣才會有上層的Before的內容提示)
攔截方法時,在方法的參數里面加..表示不管里面什么參數,都會進行攔截
如果要對所有的方法都進行攔截,就寫成controller.*(..)
查看全部 -
防止沒有登錄的用戶對api進行調用成功
(通常方法是在每個api前面進行添加判斷,這樣每個api都加太累了)
使用AOP來進行的步驟:
添加依賴:spring-boot-starter-aop
(往常的做法是要在啟動類加一個注解,但是aop不需要加)
建立處理文件:新建一個包叫aspect,然后在底下建一個java class(不要選aspect)叫HttpAspect,加上注解@Aspect和@Component,然后開始寫邏輯代碼
查看全部 -
構造方法的解決方案來進行控制是否登錄的用戶才可以訪問api的方式行不通:當spring程序運行的時候就會把這些類給實力化了,當一次http請求來的時候不會再執行這個構造方法了,所以這樣是行不通的。
查看全部 -
事務只會對RuntimeException 進行事務回滾,不會對Exception進行回滾。
查看全部 -
AOP的例子
查看全部
舉報