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,做很多繁琐重复的配置,稍微不留神就会出现各种各样的问题,每次调试真的是香菇.蓝瘦啊. ...
随机推荐
- C/C++编程可用的Linux自带工具
GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件.当前的版本原本由在Cygnus Solutions的程序员以Binary File D ...
- 如何在Windows环境下安装Linux系统虚拟机
如何在Windows环境下安装Linux系统虚拟机 本篇经验写给想要入门学习C语言的小白们.Windows系统因为使用窗口图形化,操作简单,功能多样,所以我们在Windows环境下可以做到很多,但想要 ...
- EBS-BG&LE&OU
SELECT DISTINCT hrl.country, hroutl_bg.NAME bg, hroutl_bg.o ...
- java 封装返回json数据
做的东西,一直是用easyui的,和后台的交互数据都是json格式的. 今天想要单独弄一个json数据返回给前台,其实是比较简单的问题,json接触不多,记录一下. 代码: public static ...
- 解决WebService中System.InvalidOperationException:缺少参数的问题
此问题在.Net 4.0 IIS7 Windows Server 2008下可能会出现. 现象是第一次正常调用,第二次接口报错. 删除CacheDuration即可.
- C#中datagridviewz中SelectionMode的四个属性的含义
C#中datagridviewz中SelectionMode的四个属性的含义 DataGridViewSelectionMode.ColumnHeaderSelect 单击列头就可以选择整列DataG ...
- cesium编程入门(九)实体 Entity
cesium编程入门(九)实体 Entity 在cesium编程入门(五)绘制形状提到过添加实体的方法,这一节聊一聊实体相关的一些内容: 先来看 Entity 的各个属性 id 唯一标志,如果没设置, ...
- Android 为 TextView 添加超链接 (网址,邮件,电话)
<string name="info">Cette application a été développée par <a href="http://w ...
- git删除未监视的文件
新增的文件使用git status查看会提示Untracked files,如果想要删除Untracked files,可以使用如下命令: git clean -f # 删除Untracked fil ...
- LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)
题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...