博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot初体验(三)Spring AOP
阅读量:6577 次
发布时间:2019-06-24

本文共 1920 字,大约阅读时间需要 6 分钟。

hot3.png

简介

什么是AOP,AOP用处:

    在软件业,AOP为Aspect Oriented Programming的缩写,意为:,通过方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是的延续,是软件开发中的一个热点,也是框架中的一个重要内容,是的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的降低,提高程序的可重用性,同时提高了开发的效率。(copy自

百度百科)

简单明了的解释:

个人体验:

        在之前工作参与的ASP.NET MVC的开发中,微软提供了Filter过滤器,通过继承AuthorizeAttribute重写4个方法可以对Controller不同时期的插入操作。这个Filter就是对AOP思想的一种实现。之前工作里利用Filter拦截请求进行 授权验证、任务埋点、错误/行为日志记录、跨域设置等功能实现。 但是在之前工作里很少用到AOP在BLL和DAL层的实现,也没有深入了解。 现在先Spring boot中的AOP写个demo了解一下在Spring boot中AOP的应用方式和实现。

实现步骤

在之前的两篇文章里,实现了一个最简单的api。

这里用在之前的基础上继续添加aop。这里使用自定义注解的方式,也是更接近于asp.net mvc中的【】特性方式。

1. 打开pom.xml,添加aop配置节点

org.springframework.boot
spring-boot-starter-aop

222014_tRKl_2680178.png

 

点击View -->Tool Windows-->Maven Projects,弹出maven管理工具栏。

222104_QpbO_2680178.png

在Maven Project工具栏点击这个[ReimportAllMavenProjects]小圆圈,就会解析刚刚添加的配置节点。

222731_7Cqg_2680178.png

 

2.创建一个类作为切面类

(1)使用@Configuration注解 声明这是一个配置类。或者使用@Component注解也可以;

(2)使用@Aspect注解,声明这是一个切面。

(3)使用@Pointcut定义一个切入点,切入点使用execution表示, execution表达式的使用方式之前文章里转载过一篇,可参考 ;这里的意思是切入com.example.demo项目下controller文件夹内TestController下的所有方法。

package com.example.demo.aop;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.context.annotation.Configuration;/** * @author:liucx * @date:2018-1-21 * @description:控制器切面拦截 *///配置注解,@Component也可以@Configuration//切面注解@Aspectpublic class ControllerFilter {    //定义一个切入点    @Pointcut("execution(* com.example.demo.controller.TestController.*(..))")    public void ActionFilter() {}    @Before("ActionFilter()")    public void BeforeAction(JoinPoint point) {        System.out.println("before切面");        //ToDoSomething    }}

3.运行项目,在浏览器运行testcontroller内定义的路由

230348_PyqW_2680178.png

230333_MxlO_2680178.png

在方法运行之前,已经执行了在切面内执行的输出。

 

总结:

        这里只使用了最简单的方式,也只展示了@Before这一种注解,更详细的spring 中aop的实现还请参考其他文档。

        因为没做过java,也是搜着资料摸着黑瞎写,所以各种描述语言多有不准确,仅作参考。如有错误还请指正。

转载于:https://my.oschina.net/CrazyBoy1024/blog/1610746

你可能感兴趣的文章
[摘录]调动员工积极性的七个关键
查看>>
Backup Volume 操作 - 每天5分钟玩转 OpenStack(59)
查看>>
.htaccess 基础教程(四)Apache RewriteCond 规则参数
查看>>
转: maven进阶:一个多模块项目
查看>>
Android控件之HorizontalScrollView 去掉滚动条
查看>>
UVM中的class--2
查看>>
ORACLE 存储过程异常捕获并抛出
查看>>
博客园博客美化相关文章目录
查看>>
root用户重置其他密码
查看>>
Oracle推断值为非数字
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
从JDK源码角度看Short
查看>>
parceljs 中文文档24小时诞生记
查看>>
五年 Web 开发者 star 的 github 整理说明
查看>>
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
查看>>
ReactNative字体大小不随系统字体大小变化而变化
查看>>
中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
查看>>
使用模板将Web服务的结果转换为标记语言
查看>>
inno setup 打包脚本学习
查看>>