SpringBoot AOP拦截器
在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拦截器相关推荐
- aop区别 decorator_Decorator或Proxy模式;AOP拦截器
总结如下:过滤器实现方式在不保证功能前提下,从性能角度考虑有如下先后顺序:Decorator或Proxy模式:AOP拦截器. 考虑使用AOP拦截器时,最好选择那些受众面积比较广的功能,例如一些基础通用 ...
- 运用Unity实现AOP拦截器[结合异常记录实例]
运用Unity实现AOP拦截器[结合异常记录实例] 参考文章: (1)运用Unity实现AOP拦截器[结合异常记录实例] (2)https://www.cnblogs.com/wujy/p/33233 ...
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
[SpringBoot]拦截器使用@Autowired注入接口为null解决方法 参考文章: (1)[SpringBoot]拦截器使用@Autowired注入接口为null解决方法 (2)https: ...
- 从零开始学 Java - Spring AOP 拦截器的基本实现
一个程序猿在梦中解决的 Bug 没有人是不做梦的,在所有梦的排行中,白日梦最令人伤感.不知道身为程序猿的大家,有没有睡了一觉,然后在梦中把睡之前代码中怎么也搞不定的 Bug 给解决的经历?反正我是有过 ...
- SpringBoot——使用拦截器拦截未登录用户
前置知识SpringBoot配置拦截器基于HandlerInterceptor接口实现,关键三个方法 preHandle()执行目标之前 postHandle()执行目标之后 afterComplet ...
- SpringBoot与拦截器
自定义拦截器 package com.buba.interceptor;import com.buba.pojo.User; import org.springframework.web.servle ...
- SpringBoot配置拦截器导致swagger失效
问题背景: Springboot 启用拦截器后,Swagger无法访问 原因 拦截器拦截了所有的请求,导致swagger也被拦截,当在进行鉴权的的时候,可能需要传入一些特定的参数,或者请求头信息,这样 ...
- springboot Interceptor拦截器excludePathPatterns失效
springboot Interceptor拦截器excludePathPatterns失效 使用jwt和HandlerInterceptorAdapter做登录的拦截放行失效,其实更多时候不是配置文 ...
- springboot设置拦截器的方法
springboot设置拦截器的方式: 1.编写一个类,在类上面加上@Configuration注解,然后继承 WebMvcConfigurerAdapter. 重写父类的方法:addIntercep ...
最新文章
- 2022-2028年中国体育赛事产业深度调研及投资前景预测报告
- tp3.2.3权限控制一之详解及demo
- JSP文件如何转换成Java文件?
- elementUI的container布局设置全屏宽度
- 内核移植出现:Kernel panic - not syncing: No init found.
- linux日志区别,你要了解的linux系统日志知识点都在这
- Github:深度学习文本检测识别(OCR)精选资源汇总
- php 设置mssql编码 解决乱码问题 mssql_connect charset Utf8
- 【电力负荷预测】基于matlab粒子群算法优化支持向量机预测电力负荷【含Matlab源码 1225期】
- 十进制转换为三进制数_python3实现
- 按什么键能够迅速锁定计算机,电脑快速锁屏按什么键
- 僵尸物联网大战区块链
- php雅思老师,雅思口语话题:最喜欢的老师
- 【安卓笔记】自定义toggleButton
- 《基础微积分教材中译版》--序言
- 阿里云ecs服务器挂载oss
- P3955 [NOIP2017 普及组] 图书管理员C++题解
- UI妹子说我用CSS实现毛玻璃效果的样子很帅
- 指数增强是什么意思?(附:策略源码)
- 服务器资源监控工具———node_exporter