全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

图解JAVA中Spring Aop作用

假如没有aop,在做日志处理的时候,我们会在每个方法中添加日志处理,比如

但大多数的日子处理代码是相同的,为了实现代码复用,我们可能把日志处理抽离成一个新的方法。但是这样我们仍然必须手动插入这些方法。

但这样两个方法就是强耦合的,假如此时我们不需要这个功能了,或者想换成其他功能,那么就必须一个个修改。

通过动态代理,可以在指定位置执行对应流程。这样就可以将一些横向的功能抽离出来形成一个独立的模块,然后在指定位置

插入这些功能。这样的思想,被称为面向切面编程,亦即AOP。

为了在指定位置执行这些横向的功能,需要知道指定的是什么地方

例如上图,方法级别的aop实现,在一个程序执行链条中,把method2称为切点,也就是说在method2执行时会执行横切的功能,那么是在method2之前还是之后呢,又是执行什么呢?这些都由advice(通知)来指定。advice有5种类型,分别是

通知类型 简介

Before(前置通知) 目标方法调用之前执行

After(后置通知) 目标方法调用之后执行

After-returning(返回通知) 目标方法执行成功后执行

After-throwing(异常通知) 目标方法抛出异常后执行

Around(环绕通知) 相当于合并了前置和后置

把切点和通知合在一起就是切面了,一个切面指定了在何时何地执行何种方法。在spring aop中如此定义这个切面:

@Aspect
@Component
public class UserAspect {

  @Before("execution(* com.aop.service.impl.UserServiceImpl.login(..))")
  public void loginLog(){
    System.out.println("user login");
  }

}

使用注解@Aspect将某个特定的类声明为切面,这样,该类下的方法就可以声明为横向的功能点后插入到指定位置。使用execution表达式声明在这个切点,格式如下

第一个位置指定了方法的返回值,*号代表任意类型的返回值,然后是所在的类和方法名,*号同样代表任意,就是该类中任意的方法,在上一个例子中方法名是login,则是指定了该类中的login方法。然后最后一个参数是方法入参,因为Java中支持重载,所以这个参数可以帮助你更精确的进行定位。两点表示任意参数类型。这样,execution表达式告诉了程序该在何地执行通知。而被诸如@Before注解修饰的方法就是通知的内容,也就是做什么。

至此,我们就可以使用spring aop,但是还有两点需要得到注意

将切面类声明为一个bean

切点指定的方法所在的类也同样需由spring注入才能生效

希望本篇文章对您有所帮助


# JAVA中Spring  # Aop作用  # JAVA  # Spring  # Aop  # 详解Java SpringAOP切面类  # 详细解读Java Spring AOP  # Java Spring AOP详解  # Java SpringBoot实现AOP  # 详解Java Spring AOP  # 就可以  # 两点  # 返回值  # 类中  # 的是  # 是在  # 在这个  # 又是  # 不需要  # 则是  # 做什么  # 会在  # 亦即  # 被称为  # 什么地方  # 什么呢  # 能把  # 在一  # 在上  # 对您 


相关文章: 建站之星如何实现PC+手机+微信网站五合一建站?  C++中引用和指针有什么区别?(代码说明)  如何快速搭建安全的FTP站点?  教程网站设计制作软件,怎么创建自己的一个网站?  电商网站制作价格怎么算,网上拍卖流程以及规则?  建站之星后台密码遗忘如何找回?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  如何选购建站域名与空间?自助平台全解析  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何在企业微信快速生成手机电脑官网?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何撰写建站申请书?关键要点有哪些?  高端建站如何打造兼具美学与转化的品牌官网?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  怀化网站制作公司,怀化新生儿上户网上办理流程?  Android滚轮选择时间控件使用详解  PHP正则匹配日期和时间(时间戳转换)的实例代码  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  深圳网站制作平台,深圳市做网站好的公司有哪些?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何通过商城免费建站系统源码自定义网站主题?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  长沙做网站要多少钱,长沙国安网络怎么样?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  ,购物网站怎么盈利呢?  移民网站制作流程,怎么看加拿大移民官网?  建站之星如何配置系统实现高效建站?  如何通过远程VPS快速搭建个人网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何在服务器上三步完成建站并提升流量?  如何基于PHP生成高效IDC网络公司建站源码?  如何用美橙互联一键搭建多站合一网站?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  建站主机数据库如何配置才能提升网站性能?  如何在IIS7上新建站点并设置安全权限?  如何通过FTP服务器快速搭建网站?  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何高效完成独享虚拟主机建站?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  宝塔新建站点为何无法访问?如何排查?  如何获取上海专业网站定制建站电话?  建站之星北京办公室:智能建站系统与小程序生成方案解析  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。