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提交 查看控制台


spring boot快速入门 7: 使用aop处理请求的更多相关文章
- Spring Boot 快速入门
Spring Boot 快速入门 http://blog.csdn.net/xiaoyu411502/article/details/47864969 今天给大家介绍一下Spring Boot MVC ...
- Spring Boot快速入门(二):http请求
原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hel ...
- spring boot入门教程——Spring Boot快速入门指南
Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运 ...
- Spring Boot 快速入门 史上最简单
1.Spring Boot 概述 Spring Boot 是所有基于 Spring 开发的项目的起点.Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的 ...
- Spring Boot 快速入门(IDEA)
从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架:SpringBoot帮助开发者快速启动一个Web容器:SpringBoot继承了原有Spring框架的优秀 ...
- 笔记61 Spring Boot快速入门(一)
IDEA+Spring Boot快速搭建 一.IDEA创建项目 略 项目创建成功后在resources包下,属性文件application.properties中,把数据库连接属性加上,同时可以设置服 ...
- Spring Boot 快速入门笔记
Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...
- Spring Boot快速入门(最新)
本章通过完成Spring Boot基础项目的构建并实现一个简单的Http请求处理,让大家对Spring Boot有一个初步的了解,并体验其结构简单.开发快速的特性.预计阅读及演练过程将花费约5分钟. ...
- Spring Boot 快速入门(一)
简介 相信很多人都接触spring框架很长时间了,每次搭建spring框架的时候都需要配置好多的jar.xml,做很多繁琐重复的配置,稍微不留神就会出现各种各样的问题,每次调试真的是香菇.蓝瘦啊. ...
随机推荐
- http应答码
1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应.· 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.( ...
- HAService 刨坑
High availability is a characteristic of a system, which describes the duration (length of time) for ...
- windows7 不能更新,提示:"WindowsUpdate_80240016" "WindowsUpdate_dt000",如何解决?
计算机(右键) ---- 管理 -------- 服务和应用程序 -----服务(找到名称为windows update的服务,并且在windwos update服务右键 选择重新启动 ) 再次安装更 ...
- jmeter 调用jar包 本地加密
1.因为加密接口是有我们自己加密方式,所有加密包由开发提供,获得加密包后方式jmeter目录/lib/ext文件夹中 2.选择引入加密包 3.添加BeanShell Sampler和Debug Sam ...
- 如何将图片嵌入到Html中
将图片内嵌入到Html中,最好的方法就是用Base64 string.例如:<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg ...
- Docker在github上的站点
https://github.com/docker (docker在github上的官方地址) https://github.com/dockerfile (docker官方镜像的Dockerfile ...
- Solr之functionQuery(函数查询)
Solr函数查询 让我们可以利用 numeric域的值 或者 与域相关的的某个特定的值的函数,来对文档进行评分. 怎样使用函数查询 这里主要有两种方法可以使用函数查询,这两种方法都是通过solr ht ...
- 四.Jenkins的授权和访问控制
默认的Jenkins不包含任何的安全检查,任何人可以修改Jenkins设置,job和启动build等.在多人使用的时候,显然会存在比较大的安全风险,所以需要配置Jenkins的授权和访问控制. [系统 ...
- Windows和linux通过命令互传文件
下载pscp https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 放在Windows的c:windows/system32下 ...
- c# HighCharts使用
最近接到个图形报表的需求,网络上找了几个插件,最后决定用highcharts 需要的文件 1.bll文件,添加到项目引用 http://files.cnblogs.com/files/loveju ...