-
@Valid
查看全部 -
代碼克隆及切換分支
查看全部 -
git上的的代碼
查看全部 -
前面基礎(chǔ)課程
查看全部 -
afterReruring查看全部
-
mvn clean ackage -Dmaven.test.ski=true
查看全部 -
AutoConfigureMockMvc
查看全部 -
使用日志:
在HttpAspect中,注意引進(jìn)的是org.slf4j包內(nèi)的Logger類,它是Spring自帶的日志框架,它的底層實現(xiàn)是logback
private final static Logger logger=LoggerFactory.getLogger(HttpAspect.class);
查看全部 -
package com.imooc.aspect;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* Aspect切面類
* 主要是在切面類相互之前寫Logger
*
* @Author:Liyoh-Frank Create by IntelliJ IDEA
* @Date: 2018/7/6 16:46
* @LoveAndThanks: Misty
*/
@Aspect
@Component
public class HttpAspect {
? ?private final static Logger LOGGER = LoggerFactory.getLogger(HttpAspect.class);
? ?//定義一個log,定義個切點--這樣在下面就不用寫一堆SB代碼了
? ?@Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
? ?public void log() {
? ?}
? ?/**
? ? * JoinPoint對象封裝了SpringAop中切面方法的信息,
? ? * 在切面方法中添加JoinPoint參數(shù),就可以獲取到封裝了該方法信息的JoinPoint對象.
? ? *
? ? * @param joinPoint
? ? */
? ?//Before記錄Http請求
? ?@Before("log()")
? ?public void doBefore(JoinPoint joinPoint) {//JoinPoint可以獲取方法名和方法參數(shù)
? ? ? ?LOGGER.info("Before()");
? ? ? ?ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
? ? ? ?HttpServletRequest request = attributes.getRequest();
? ? ? ?//url-請求的路徑
? ? ? ?LOGGER.info("url={}", request.getRequestURL());
? ? ? ?//method 請求的方式
? ? ? ?LOGGER.info("method={}", request.getMethod());
? ? ? ?//ip ?客戶端的ip
? ? ? ?LOGGER.info("ip={}", request.getRemoteAddr());
? ? ? ?//請求的哪一個類的方法
? ? ? ?LOGGER.info("class_method={}", joinPoint.getSignature().getDeclaringType() +
? ? ? ? ? ? ? ?"." + joinPoint.getSignature().getName());
? ? ? ?//類方法的參數(shù)
? ? ? ?LOGGER.info("args={}", joinPoint.getArgs());
? ?}
? ?@After("log()")
? ?public void doAfter() {
? ? ? ?LOGGER.info("After()");
? ?}
? ?@AfterReturning(pointcut = "log()", returning = "object")
? ?public void doAfterReturning(Object object) {
? ? ? ?LOGGER.info("response={}", object);
? ?}
}查看全部 -
Controller單元測試:使用@AutoConfigureMockMvc注解,注入MockMvc類。搭配MockMvc屬性的perform方法,使用MockMvcRequestBuilders模擬get、post等請求,檢查響應(yīng)是否符合預(yù)期。
在項目打包發(fā)布時,springboot會自動執(zhí)行單元測試用例,并在控制臺打印出執(zhí)行結(jié)果。
查看全部 -
快速為方法建立單元測試:方法右鍵 -> Go To -> Test
查看全部 -
(1)@RunWith(SpringRunner.class) 表示此類在測試環(huán)境運行
(2)@SpringBootTest注解表示將啟動整個spring工程
查看全部 -
Spring默認(rèn)的事務(wù)管理對于拋出的異常,RuntimeException才會回滾,如果是Exception則不會回滾。
查看全部 -
日志記錄的方式,{ } 作為占位符,方法和 String.format 類似,第二個參數(shù)的值會放到占位符中去。
查看全部 -
AOP注解使用的關(guān)于 @Pointcut
查看全部
舉報