Spring aop

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());
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章