千家信息网

Java中Spring框架之AOP如何配置

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了Java中Spring框架之AOP如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是AOPAOP(Aspe
千家信息网最后更新 2026年11月03日Java中Spring框架之AOP如何配置

这篇文章主要介绍了Java中Spring框架之AOP如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

  什么是AOP

  AOP(Aspect Oriented Programming)面向切面编程,是OOP(面向对象编程)的重要补充,面向对象是Java编程的基础,以封装、继承、多态建立了对象间的层次关系,关注的是每个对象的具体实现。面向对象允许我们开发纵向的关系。

  AOP关注横向关系,也就是说类和类之间不需要特定的关系,它能够将某些通用的操作(如:日志处理、安全验证、事务处理、异常处理、性能统计等)插入到这些无关的类中,从而可以让每个类只关注自己的核心逻辑,不必处理这些通用的操作,这个过程就是横切,而这些通用的操作就是切面Aspect。

  简单来说:AOP能把和类的核心业务无关,多个类又共同需要的逻辑代码封装起来,当对象需要时自动调用,这样就减少了类中的重复代码,降低了类之间的耦合性,提高了程序的维护性。

  AOP术语

  1、横切关注点

  对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

  2、切面(aspect)

  类是对物体特征的抽象,切面就是对横切关注点的抽象

  3、连接点(joinpoint)

  被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

  4、切入点(pointcut)

  对连接点进行拦截的定义

  5、通知(advice)

  所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

  6、目标对象

  代理的目标对象

  7、织入(weave)

  将切面应用到目标对象并导致代理对象创建的过程

  8、引入(introduction)

  在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段

  AOP应用场景

  1)日志 ,方法执行开始和完成以及出现异常都可以用日志记录

  2)缓存 ,第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库

  3)事务 ,调用方法前开启事务, 调用方法后提交关闭事务

  等等

  AOP的配置

  1)导入Maven依赖

  

  

  junit

  junit

  4.12

  test

  

  

  org.springframework

  spring-context

  4.3.14.Release

  

  

  org.springframework

  spring-core

  4.3.14.RELEASE

  

  

  org.springframework

  spring-beans

  4.3.14.RELEASE

  

  

  org.springframework

  spring-context-support

  4.3.14.RELEASE

  

  

  org.springframework

  spring-expression

  4.3.14.RELEASE

  

  

  org.springframework

  spring-aop

  4.3.14.RELEASE

  

  

  

  org.aspectj

  aspectjrt

  1.8.13

  

  

  

  org.aspectj

  aspectjweaver

  1.8.13

  

  

  org.springframework

  spring-test

  4.3.14.RELEASE

  

  

  commons-logging

  commons-logging

  1.1.2

  

  

  log4j

  log4j

  1.2.17

  

  

  编写Service接口和实现类,这里只完成模拟操作

  public interface AdminService {

  void saveAdmin();

  void updateAdmin();

  void deleteAdmin();

  void selectAdmin();

  }

  public class AdminServiceImpl implements AdminService {

  @Override

  public void saveAdmin() {

  System.out.println("Invoke saveAdmin");

  }

  @Override

  public void updateAdmin() {

  System.out.println("Invoke updateAdmin");

  }

  @Override

  public void deleteAdmin() {

  System.out.println("Invoke deleteAdmin");

  }

  @Override

  public void selectAdmin() {

  System.out.println("Invoke selectAdmin");

  }

  }

  3)编写自定义增强类,该类的方法对应AOP的5种增强通知,分别是:

  1)前置通知before :方法调用前执行

  2)后置通知after-returning:方法调用后执行,出现异常不执行

  3)后置通知after:方法调用后执行,出现异常也执行

  4)异常通知after-throwing:出现异常执行

  5)环绕通知around:方法调用前后执行

  /**

  * 自定义增强类

  */

  public class MyAdvise {

  public void before() throws Throwable {

  System.out.println("这是before");

  }

  public void afterReturning(){

  System.out.println("这是afterReturning");

  }

  public void after(){

  System.out.println("这是after");

  }

  public void afterThrowing() throws Throwable {

  System.out.println("这是afterThrowing");

  }

  public Object around(ProceedingJoinPoint point) throws Throwable {

  System.out.println("这是around -- 前置执行");

  Object obj = point.proceed();

  System.out.println("这是around -- 后置执行");

  return obj;

  }

  }

4)   Spring配置文件

  

  

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xmlns:aop="http://www.springframework.org/schema/aop"

  xsi:schemaLocation="http://www.springframework.org/schema/beans

  http://www.springframework.org/schema/beans/spring-beans.xsd

  http://www.springframework.org/schema/aop

  http://www.springframework.org/schema/aop/spring-aop.xsd">

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  5)运行测试

  @RunWith(SpringJUnit4ClassRunner.class)

  @ContextConfiguration("classpath:applicationContext-aop.xml")

  public class TestAOP {

  @Test

  public void test(){

  ApplicationContext app = new

  ClassPathXmlApplicationContext("applicationContext-aop.xml");

  AdminService as = (AdminService) app.getBean("adminService");

  as.deleteAdmin();

  }

  }

  可以看到执行任何Service类的方法,都会调用MyAdvise中的通知方法

感谢你能够认真阅读完这篇文章,希望小编分享的"Java中Spring框架之AOP如何配置"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

方法 对象 这是 连接点 配置 就是 处理 事务 代码 代表 关注点 切面 篇文章 日志 目标 查询 编程 框架 之间 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州大一互联网络科技有限公司 中关村互联网科技集团 互联网科技有限公司经营范围 金融科技创新监管互联网金融 奇酷互联网络科技 亿策互联网科技 上海致骋互联网科技 赫美联合互联网科技 新华互联网科技校企合作 滨湖区互联网智能科技产品供应 深圳互联网科技怎么样 小米互联网科技园设置 北京市互联网新科技 广东工业互联网大赛深圳学泰科技 富国互联网金融科技混合基金 信承诺互联网科技有限公司 北京天晋互联网科技有限公司 互联网科技和医药行业 华人运通互联网科技公司 科技发展第三阶段互联网时代 猪兼强互联网科技 上海挚品互联网科技 智慧科技互联网 成都玖崟互联网科技有限公司乐商圈怎么样 以后互联网后是啥科技 受益于互联网科技的高速发展 语蝶互联网科技有限公司 玉溪互联网科技怎么选 哈尔滨屹滨互联网科技有限公司 互联网公司高科技产品
0