spring基础 aop及注解

AOP:是面向切面编程,将分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立的模块中。

Joinpoint:类中可以被增强的方法,这些方法称为连接点。
Pointcut:我们要进行增强的方法,对连接点进行拦截的定义
Advice(通知/增强):指拦截到joinpoint后所要做的是就是通知,分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面所完成的功能)

Aspect(切面):切入点和通知的结合;
Target:被通知的对象,也是连接点所在的对象
Proxy: 向目标对象应用通知之后创建的对象

 

先创建一个类,将其中的prin()方法作为切入点,Book类就是目标对象

public class Book {
 
 public void prin(){
  System.out.println("切入点");
 }

}


再创建一个类,作为切面

public class Mybook {

     public void be_enhance(){
	System.out.println("前置增强");
	}
	
public void af_enhance(){
	System.out.println("后置增强");
	}
	
public void ar_enhance(ProceedingJoinPoint joinPoint) throws Throwable{
             System.out.println("方法前环绕");
              joinPoint.proceed();
              System.out.println("方法后环绕");
	}
}



在xml创建对象实例

<bean id="book" class="aop_aspecj.Book"></bean>
<bean id="mybook" class="aop_aspecj.Mybook"></bean>


并对方法进行增强

<aop:config>
    <!--配置切入点 -->
    <aop:pointcut  expression="execution(* aop_aspecj.Book.*(..))" id="pointcut1"/>
    
    <!-- 配置切面:增强用在具体方法(切入点)上 -->
    
    <aop:aspect ref="mybook">
        <aop:before method="be_enhance" pointcut-ref="pointcut1"/>
        
        <aop:after-returning method="af_enhance" pointcut-ref="pointcut1"/>
        
        <aop:around method="ar_enhance" pointcut-ref="pointcut1"/>
    </aop:aspect>
</aop:config>


运行效果:

前置增强
方法前环绕
切入点
后置增强
方法后环绕
aop注解

aop一般通过注解方式来配置,更加简单快捷,我们还是通过上面的例子来演示。

先配置xml,创建对象并设置代理;

<!-- 开启aop代理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

 <!-- 创建对象 -->
<bean id="book" class="aop_aspecj.Book"></bean>
<bean id="mybook" class="aop_aspecj.Mybook"></bean>


 

再在增强类中注解,配置切入点及增强方式

@Aspect
public class MyBook {
	@Before(value="execution(* aop_aspecj.Book.*(..))")
	public void be_enhance(){
		System.out.println("前置增强");
	}

}


然后咱们就可以通过测试类运行 效果是前置增强。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值