aop 面向切面,所有業務都要處理的業務
/**
* Created by Administrator on 2017/7/18.
*/
@Aspect
@Component
public class HttpAspect {
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
/**
* 共用方法,面向切面方法
*/
@Pointcut("execution(public * com.stark.controller.*Controller.*(..))")
public void log(){
logger.info("log.....");
}
/**
* 控制層執行之前執行doBefore
*/
@Before("log()")
public void doBefore(JoinPoint joinPoint){
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
logger.info("id={}", request.getRemoteAddr());
// 類方法
logger.info("class_Method={}", joinPoint.getSignature().getDeclaringTypeName()+'.'+joinPoint.getSignature().getName() );
// 參數
logger.info("args={}", joinPoint.getArgs());
}
/**
* 控制層執行結束後執行doAfter
*/
@After("log()")
public void doAfter(){
logger.info("after....");
}
/**
* 執行結束後返回的結果打印出來
* @param object
*/
@AfterReturning(returning = "object", pointcut = "log()")
public void doAfterReturn(Object object){
// logger.info("response={}", object.toString());
}
}