AOP相关术语的理解

面向切面编程AOP ---切面提供了一种取代继承和委托的方式

 

AOP中的术语:

 通知:就是程序的功能,比如 安全、事务、日志等

连接点:和方法有关的前前后后,都是连接点

切入点:说明在哪儿干

切面:通知和切入点相互结合

引入:允许我们向现在的类中添加新的方法和属性,把切面用到目标类中

目标:引入中提到的目标类

织入:吧切面应用到目标对象来创建新的代理对象的过程。

代理:就是向目标对象应用通知后被创建的对象。

 

spring对AOP的支持局限于方法的注入,spring创建的全部通知都是用标准的java类编写的,,定义通知所应用的切点通常是以XML文件的方式在spring配置文件中配置的。

 

spring利用代理类来包裹切面,从而把他们织入到spring管理的bean中,在代理借钱方法调用之后,实际调用的目标bean方法之前,代理会执行切面逻辑。

 

spring生成代理类的方式有两种:

1、如果目标对象实现的是一个接口,spring会使用jdk的proxy类,它允许spring动态生成一个新的类来实现必要的接口,织入任何的通知,并把对这些接口的任何调用都转发给目标类。

2、如果目标类不是一个实现一个接口,spring就会使用CGLIB库生成目标类的一个子类,在创建这个子类时,spring织入通知,并且把这个子类的调用委托到目标类

 

引入aop 的namespace

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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-3.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

 

基于pojo的aop的xml文件配置

 <!-- aop -->
  <bean id="inform" class="com.hnie.demo.service.impl.Inform"></bean>
  
  <aop:config>
  	<aop:aspect ref="inform">
  		<aop:pointcut expression="execution(* *.sayHello(. .))" id="performance"/>
  		<aop:before method="before" pointcut-ref="performance"/>
  		<aop:after-returning method="end" pointcut-ref="performance"/>
  		<aop:after-throwing method="excepition" pointcut-ref="performance"/>
  	</aop:aspect>
  	
  	
  </aop:config>

 

定义通知

package com.hnie.demo.service.impl;

public class Inform {
	
	public void before(){
		System.out.println("在方法之前执行");
	}
	
	public void end(){
		System.out.println("在方法之后执行");
	}

	public void excepition(){
		System.out.println("在遇到异常时执行");
	}
}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值