Spring AOP的使用

Spring AOP的概念:AOP是面向切面编程的意思,其主要作用就是对代码块进行处理;其设计思想源自代理模式,在此基础上进行封装扩展,最终形成了aop框架;

面向切面编程的理解就是在不修改原有的代码的情况下,直接在业务流程中将新的代码切入;

面向切面编程的一些基本概念:

什么是切入点?

切入点就是可以插入增强处理的方法;

什么是增强处理类型?

增强处理类型就是在原有的对象之前插入的增强处理为前置增强,改方法正常执行以后插入的增强处理为后置增强;

使用Spring AOP的目的:面向切面编程,例如某个功能点,我们只需抽取横切关注点,然后让需要处理这些功能点的方法来使用代理的方式调用

AOP的组成:

1切面:横切关注点被模块化的对象---功能模块化组成的对象
2通知:就是切面需要完成的功能---就是功能的实现方法1、方法2...
3连接点:就是程序执行的某个特定位置,例如方法前方法后,也是通知所关心的位置
4目标:被通知的对象,也是连接点所在的对象
5代理(Proxy): 向目标对象应用通知之后创建的对象

AOP的使用:

1:抽取横切关注点:也就是抽取我们需要面向切面编程的功能,然后模块化对象
2:然后把模块化对象声明为切面
3:把模块对象细粒化,把功能细分为各个方法
4:声明通知和通知的连接点

使用案例:

使用Spring AOP进行输出日志:

package com.decolor.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
 * aop执行的类
 * @author Admin
 *
 */
public class ServiceLogging {
	private Log log=LogFactory.getLog(this.getClass());
	//aop执行的方法
	public void beforservice(){
		log.info("log方法已执行");
		System.out.println("save方法被调用");
	}
	
}

   
   

   
   

	
    
    
	
    
    
		
     
     
	
    
    
	
	
    
    
	
	
    
    
	
     
     
		
     
     
		
     
     
		
     
     
		
      
      
			
      
      
		
     
     
	
    
    

   
   
注意:配置文件中的execution是切入点指示符,括号中是一个切入点表达式,可以配置需要植入的增强方法,切入点表达式支持模糊匹配;以下是常用的匹配模式:
public * adduser(com.decolor.entiy.user):"*"表示匹配所有返回类型的返回值
public void *(com.decolor.entiy.user):"*"表示匹配所有的方法名
public void addUser(..);".."表示匹配所有参数个数和类型;
* com.decolor.service.*.*(..);匹配改包下的所有类和所有方法
* com.decolor.service..*();匹配改包及改包下的所有子包的所有类和所有方法;

AOP是用注解步骤:
一:在Spring的配置文件中引入注解的切面驱动器:<aop:aspectj-autoproxy/>
二:在aop执行的类上使用注解@Aspect,并且在aop执行的方法中定义切点和增强类型;
例:
@Before("execution(* com.decolor.biz.*.*(..))");//Before()是后置强类型,就是在所有方法执行完后在执行aop中的该方法;
public void save(){
"aop要执行的方法";
}
AOP增强类型的其他类型:
@Before:表示后置增强类型
@After:表示前置增强类型;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring AOP 是一个用于实现面向切面编程框架。它可以通过配置来实现横切关注点的模块化,并将其应用到程序的不同部分。Spring AOP 使用 AspectJ 切入点指示符来定义切入点表达式,用于匹配方法执行连接点。Spring AOP 支持以下 AspectJ 切入点指示符: 1. execution:用于匹配方法执行连接点。这是使用 Spring AOP 时要使用主要切入点指示符。 2. within:限制匹配以连接某些类型中的点(使用 Spring AOP 时在匹配类型中声明的方法的执行)。 3. this:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中 Bean 引用(Spring AOP 代理)是给定类型的实例。 4. target:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中目标对象(正在代理的应用程序对象)是给定类型的实例。 5. args:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中参数是给定类型的实例。 6. @target:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中执行对象的类具有给定类型的注释。 7. @args:限制匹配到连接点(使用 Spring AOP 时方法的执行),其中传递的实际参数的运行时类型具有给定类型的注释。 8. @within:限制匹配以连接具有给定注释的类型中的点(使用 Spring AOP 时在具有给定注释的类型中声明的方法的执行)。 9. @annotation:限制匹配到连接点的主题(在 Spring AOP 中运行的方法)具有给定注释的连接点。 在使用 Spring AOP 时,需要引入 Spring AOPSpring Context 相关的包,并在配置文件中进行相应的配置。可以通过 Maven 或其他构建工具来引入相关依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值