`

spring4 AOP 面向切面编程@Aspect

阅读更多

 

AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面向对象编程) 的补充.

 

AOP 的好处:

---每个事物逻辑位于一个位置, 代码不分散, 便于维护和升级

---业务模块更简洁, 只包含核心业务代码.

 

切面(Aspect): 横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象

通知(Advice): 切面必须要完成的工作

目标(Target): 被通知的对象

代理(Proxy): 向目标对象应用通知之后创建的对象

连接点(Joinpoint):程序执行的某个特定位置:如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法表示的程序执行点;相对点表示的方位。例如 ArithmethicCalculator#add() 方法执行前的连接点,执行点为 ArithmethicCalculator#add(); 方位为该方法执行前的位置

切点(pointcut):每个类都拥有多个连接点:例如 ArithmethicCalculator 的所有方法实际上都是连接点,即连接点是程序类中客观存在的事务。AOP 通过切点定位到特定的连接点。类比:连接点相当于数据库中的记录,切点相当于查询条件。切点和连接点不是一对一的关系,一个切点匹配多个连接点,切点通过 org.springframework.aop.Pointcut 接口进行描述,它使用类和方法作为连接点的查询条件。

<!-- AOP 面向切面编程 : 注解 -->
 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

 

package cn.util;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

/**
 * spring4 AOP 面向切面编程(注解)
 * @author
 *
 */
@Component
public class AOPTest {
 
 public int sum(int x,int y){
  int sum= x + y;
  System.out.println("2.方法体: sum=" + sum);
  return sum;
 }

 public int sum2(Integer x, Integer y){
  return x+y;
 }
 
 public static void main(String args[]){
  
  ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
  AOPTest test = (AOPTest)app.getBean(AOPTest.class);
  int sum=test.sum(8, 9);
  
  
 }
}

package cn.util;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**日志切面*/
@Component
@Aspect
public class AOPTestAspect {
 
 /**使用JoinPoint 获取 sum(int , int) 参数值*/
 @Before("execution(public int cn.util.AOPTest.sum(int , int ))")
 public void before(JoinPoint point){
  String methodName = point.getSignature().getName();
  Object[] args = point.getArgs();
  System.out.println("1.方法执行前:x=" + args[0] + "  y="+args[1] + " method: "+ methodName);
 }
 
 @After("execution(public int cn.util.AOPTest.sum(int , int ))")
 public void after(){
  System.out.println("3.方法执行后:");
 }

}

 

分享到:
评论

相关推荐

    Spring-aop面向切面编程实例

    面向切面编程(Aspect-Oriented Programming,AOP)是Spring框架的核心特性之一,它提供了一种优雅的方式来处理系统的横切关注点,如日志、事务管理、性能监控和权限控制等。在Spring中,AOP主要通过代理模式实现,...

    Spring面向切面编程AOP

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架中的一个重要特性,它提供了一种模块化和声明式的方式来处理程序中的横切关注点,如日志、事务管理、安全控制等。AOP的核心概念包括切面、通知、连接...

    AOP面向切面编程总结

    AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想和技术,它作为OOP(面向对象编程)的一种补充,主要解决了OOP在处理横切关注点方面的不足。在传统的面向对象程序设计中,通常会将应用划分为不同的...

    Spring AOP面向切面三种实现

    在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的功能之一就是AOP(面向切面编程)。本文将详细解析Spring AOP的三种实现方式,帮助你深入理解这一重要概念。 首先,理解AOP的基本概念至关重要。AOP是...

    AOP_使用spring框架进行面向切面编程

    面向切面编程(AOP)是一种编程范式,它旨在减少代码中的重复部分,特别是那些与核心业务逻辑无关但又必须处理的交叉关注点,如日志、事务管理、安全控制等。Spring框架是Java领域中实现AOP的常用工具,它通过提供...

    spring-aop面向切面系统日志案例

    在IT行业中,Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的核心特性之一,它使得我们能够以一种声明式的方式处理系统中的横切关注点,如日志记录、事务管理、性能监控等。这个“spring-...

    16.2 Spring框架-AOP面向切面编程

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架中的一个重要组成部分,它提供了一种模块化和声明式的方式来处理程序中的横切关注点,如日志、事务管理、性能监控等。在传统的OOP(面向对象编程)中...

    spring AOP切面编程

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它扩展了传统的面向对象编程,使得开发者可以方便地实现横切关注点,如日志、事务管理、性能监控等。在Spring中,AOP通过代理...

    spring的aop切面编程实例

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们在不修改源代码的情况下对应用程序的行为进行统一管理和控制。在本实例中,我们将深入探讨如何使用AspectJ技术和XML配置来实现AOP。 首先,了解...

    Spring 4.0 AOP 面向切面Maven测试程序

    Spring 4.0 AOP(面向切面编程)是Spring框架中的一个重要组成部分,它允许开发者在不修改原有代码的情况下,通过插入额外的行为来增强或监控应用程序。AOP的核心概念是切面(Aspect),它封装了跨越多个对象的业务...

    Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置

    Spring AOP 是 Spring 框架中的一种面向切面编程(Aspect-Oriented Programming,AOP)技术,用于解决横切关注点的问题。AOP 的主要思想是将通用功能与业务逻辑分离,让开发者更专注于业务逻辑的实现。 在 Spring ...

    spring aop 自定义切面示例

    在Spring AOP(面向切面编程)中,自定义切面是实现业务逻辑解耦、增强代码可维护性的重要手段。AspectJ是一个强大的面向切面的编程库,它提供了与Spring AOP集成的能力,使我们可以编写更为灵活和模块化的代码。...

    面向切面 aop

    面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在将系统中的关注点分离,使得代码更加模块化,易于维护和扩展。在传统的面向对象编程(OOP)中,业务逻辑往往与日志、事务管理、权限控制等横...

    Spring Aop面向切面的java代码

    Spring AOP,全称Spring面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对程序进行功能增强的技术。面向切面编程(Aspect Oriented Programming,AOP)的核心思想是将关注...

    面向切面编程

    面向切面编程(Aspect-Oriented Programming,简称AOP)是一种编程范式,它旨在提高模块化程度,通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,使得代码更加清晰、易于维护。面向切面编程的核心...

    spring使用动态代理面向切面编程(AOP) xml

    在Spring框架中,面向切面编程(AOP)是一种强大的设计模式,它允许开发者将关注点分离,将横切关注点(如日志、事务管理、权限检查等)与核心业务逻辑解耦。本篇文章将深入探讨如何使用Spring的动态代理机制实现AOP...

    Spring 动态代理和aop切面编程例子

    在Spring框架中,动态代理和AOP(面向切面编程)是两个重要的概念,它们极大地增强了代码的可维护性和灵活性。下面将详细讲解这两个概念及其实际应用。 动态代理,是Spring提供的一种机制,允许我们在不修改原对象...

    SpringBoot之AOP面向切面编程实例.rar

    而AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架的一个重要特性,它允许开发者定义“切面”,这些切面可以封装系统中的交叉关注点,如日志、事务管理等,使得代码更加模块化和可维护。本实例将深入...

    AOP 面向切面编程1

    面向切面编程(AOP)是一种编程范式,旨在提高软件设计的模块化程度,将关注点分离到单独的部分,称为“切面”。这样可以更好地管理横切关注点,如日志、事务管理、安全检查等,这些关注点通常会分散在应用程序的...

Global site tag (gtag.js) - Google Analytics