在Spring里面还提供有一种AOP拦截器配置,不过大部分的AOP拦截器都是围绕着业务层进行拦截处理的。1、建立一个普通的业务操作接口和它的子类:package com.microboot.service;import com.microboot.vo.Member2;public interface IMemberService {public Member2 getInfo(long mid);
}package com.microboot.service.impl;import org.springframework.stereotype.Service;import com.microboot.service.IMemberService;
import com.microboot.vo.Member2;@Service
public class MemberServiceImpl implements IMemberService {@Overridepublic Member2 getInfo(long mid) {Member2 vo = new Member2();vo.setMid(mid);vo.setName("KING");vo.setSalary(50000.00);return vo;}}现在业务层的操作完成之后随意去修改控制层,让控制层去完成业务层的调用。
package com.microboot.controller;import javax.annotation.Resource;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.microboot.service.IMemberService;
import com.microboot.util.controller.AbstractBaseController;
import com.microboot.vo.Member;@Controller
public class MemberController extends AbstractBaseController{@Resourceprivate IMemberService memberService;@RequestMapping(value = "/member_get", method = RequestMethod.GET)@ResponseBodypublic Object get(long mid) {return this.memberService.getInfo(mid);}}http://localhost/member_get?mid=100{"mid":100,"name":"KING","age":null,"birthday":null,"salary":50000.0}
3、现在的业务层处理只是一个纯粹的调用而已,但是现在希望对调用的过程进行拦截处理,所以要想实现这样的处理,那么久需要引入新的开发依赖包,修改pom.xml配置文件:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>
4、编写一个AOP拦截的控制程序类。package com.microboot.config;import java.util.Arrays;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;@Aspect
@Component
// 此时定义有一个业务层的拦截处理
public class ServiceAspect {private Logger log = LoggerFactory.getLogger(ServiceAspect.class);private final String POINT_CUT = "execution(* com.microboot..service..*.*(..))";@Around(POINT_CUT)public Object aroundInvoke(ProceedingJoinPoint point)throws Throwable {this.log.info("【*** Service-Before ***】 执行参数: "
+ Arrays.toString(point.getArgs()));// 进行具体业务调用Object obj = point.proceed(point.getArgs());this.log.info("【*** Service-After ***】返回结果: " + obj);return obj;}
}
对于WEB拦截可以使用拦截器,而对于业务层的拦截可以使用Aspect表达式结合AOPhttp://localhost/member_get?mid=100【*** MyInterceptor.preHandle ***】MemberController
【*** Service-Before ***】 执行参数: [100]
【*** Service-After ***】返回结果: Member2 [mid=100, name=KING, age=null, birthday=null, salary=50000.0]
【*** MyInterceptor.postHandle ***】MemberController
【*** MyInterceptor.postHandle ***】null
【*** MyInterceptor.afterCompletion ***】拦截处理完毕

SpringBoot AOP拦截器相关推荐

  1. aop区别 decorator_Decorator或Proxy模式;AOP拦截器

    总结如下:过滤器实现方式在不保证功能前提下,从性能角度考虑有如下先后顺序:Decorator或Proxy模式:AOP拦截器. 考虑使用AOP拦截器时,最好选择那些受众面积比较广的功能,例如一些基础通用 ...

  2. 运用Unity实现AOP拦截器[结合异常记录实例]

    运用Unity实现AOP拦截器[结合异常记录实例] 参考文章: (1)运用Unity实现AOP拦截器[结合异常记录实例] (2)https://www.cnblogs.com/wujy/p/33233 ...

  3. 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法

    [SpringBoot]拦截器使用@Autowired注入接口为null解决方法 参考文章: (1)[SpringBoot]拦截器使用@Autowired注入接口为null解决方法 (2)https: ...

  4. 从零开始学 Java - Spring AOP 拦截器的基本实现

    一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...

  5. SpringBoot——使用拦截器拦截未登录用户

    前置知识SpringBoot配置拦截器基于HandlerInterceptor接口实现,关键三个方法 preHandle()执行目标之前 postHandle()执行目标之后 afterComplet ...

  6. SpringBoot与拦截器

    自定义拦截器 package com.buba.interceptor;import com.buba.pojo.User; import org.springframework.web.servle ...

  7. SpringBoot配置拦截器导致swagger失效

    问题背景: Springboot 启用拦截器后,Swagger无法访问 原因 拦截器拦截了所有的请求,导致swagger也被拦截,当在进行鉴权的的时候,可能需要传入一些特定的参数,或者请求头信息,这样 ...

  8. springboot Interceptor拦截器excludePathPatterns失效

    springboot Interceptor拦截器excludePathPatterns失效 使用jwt和HandlerInterceptorAdapter做登录的拦截放行失效,其实更多时候不是配置文 ...

  9. springboot设置拦截器的方法

    springboot设置拦截器的方式: 1.编写一个类,在类上面加上@Configuration注解,然后继承 WebMvcConfigurerAdapter. 重写父类的方法:addIntercep ...

最新文章

  1. 2022-2028年中国体育赛事产业深度调研及投资前景预测报告
  2. tp3.2.3权限控制一之详解及demo
  3. JSP文件如何转换成Java文件?
  4. elementUI的container布局设置全屏宽度
  5. 内核移植出现:Kernel panic - not syncing: No init found.
  6. linux日志区别,你要了解的linux系统日志知识点都在这
  7. Github:深度学习文本检测识别(OCR)精选资源汇总
  8. php 设置mssql编码 解决乱码问题 mssql_connect charset Utf8
  9. 【电力负荷预测】基于matlab粒子群算法优化支持向量机预测电力负荷【含Matlab源码 1225期】
  10. 十进制转换为三进制数_python3实现
  11. 按什么键能够迅速锁定计算机,电脑快速锁屏按什么键
  12. 僵尸物联网大战区块链
  13. php雅思老师,雅思口语话题:最喜欢的老师
  14. 【安卓笔记】自定义toggleButton
  15. 《基础微积分教材中译版》--序言
  16. 阿里云ecs服务器挂载oss
  17. P3955 [NOIP2017 普及组] 图书管理员C++题解
  18. UI妹子说我用CSS实现毛玻璃效果的样子很帅
  19. 指数增强是什么意思?(附:策略源码)
  20. 服务器资源监控工具———node_exporter

热门文章

  1. JavaScript_process01
  2. ajax 的同步和异步
  3. rfid5-写成platform驱动
  4. 您的支持是作者写作最大的动力!
  5. 【Redis学习】Redis实现分布式锁
  6. 手机浏览器无法获取COOKIE的原因
  7. leetcode讲解--872. Leaf-Similar Trees
  8. Android中的消息机制
  9. 前端er怎样操作剪切复制以及禁止复制+破解等
  10. PHP----------安装包lnmp1.3-full安装的lnmp环境,如何安装PHP扩展