spring boot快速入门 7: 使用aop处理请求

 

 

 

样例:登陆拦截(aop简单样例)

第一步:在pom 文件中加入aop依赖

    <!-- spring aop -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

第二步:建立处理文件

package com.payease.aspect;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
* Created by liuxiaoming on 2017/11/7.
*/
@Aspect
@Component
public class HttpAspect {

//日志 为logger.info()提供
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);

/**
* 公共方法
*/
@Pointcut("execution(public * com.payease.controller.GirlController.*(..))")
public void log(){
logger.info("@Pointcut 公共方法:拦截请求aop!");
}

/**
* 方法执行之前
*/
//@Before("execution(public * com.payease.controller.GirlController.*(..))")
@Before("log()")
public void doBefore(){
logger.info("1。@Before 拦截请求aop!");
}

/**
* 方法执行之后
*/
@After("log()")
public void doAfter(){
logger.info("2。@After 拦截请求aop!");
}
}

第三步:controller中的方法(未做改动)

 
  
//日志
private final static Logger logger = LoggerFactory.getLogger(GirlController.class);


@Autowired
private GirlRespository girlRespository;

@GetMapping("/girls")
public List<Girl> girlList(){
logger.info("girlList方法!");
return girlRespository.findAll();
}
 

第四步:启动项目 postman提交 查看控制台

 

aop获取http请求中的内容:

第一步:修改处理文件中的doBefore方法 新增获取返回值的方法

package com.payease.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;

/**
* Created by liuxiaoming on 2017/11/7.
*/
@Aspect
@Component
public class HttpAspect {

//日志 为logger.info()提供
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);

/**
* 公共方法
*/
@Pointcut("execution(public * com.payease.controller.GirlController.*(..))")
public void log(){
logger.info("@Pointcut 公共方法:拦截请求aop!");
}

/**
* 方法执行之前
*/
//@Before("execution(public * com.payease.controller.GirlController.*(..))")
@Before("log()")
public void doBefore(JoinPoint joinPoint){
logger.info("1。@Before 拦截请求aop!");

ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();

//url
logger.info("url={}", request.getRequestURL());
//method
logger.info("method={}", request.getMethod());
//ip
logger.info("ip={}", request.getRemoteAddr());
//类方法
logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." +joinPoint.getSignature().getName());
//参数
logger.info("args={}", joinPoint.getArgs());

}

/**
* 方法执行之后
*/
@After("log()")
public void doAfter(){
logger.info("2。@After 拦截请求aop!");
}

/**
* 获取返回值
* @param object
*/
@AfterReturning(returning = "object", pointcut = "log()")
public void doAfterReturning(Object object){
logger.info("response={}",object.toString());
}
}

第二步:Girl对象新增toString()方法

package com.payease.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.Min;

/**
 * Created by liuxiaoming on 2017/11/6.
 */
@Entity
public class Girl {

    @Id
    @GeneratedValue
    private int id;

    private String cupSize;

    @Min(value=18,message = "未成年少女禁止入内!")
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getCupSize() {
        return cupSize;
    }

    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Girl{" +
                "id=" + id +
                ", cupSize='" + cupSize + '\'' +
                ", age=" + age +
                '}';
    }
}

 

启动项目,postman提交 查看控制台

 

 

转载于:https://www.cnblogs.com/liuxiaoming123/p/7799326.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值