1、AOP 中的概念:

Aspect(切面):指横切性关注点的抽象即为切面,它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面横切性关注点的抽象.

joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点,实际上joinpoint还可以是field或类构造器)

Pointcut(切入点):所谓切入点是指我们要对那些joinpoint进行拦截的定义.

Advice(通知):所谓通知是指拦截到joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知

Target(目标对象):代理的目标对象

Weave(织入):指将aspects应用到target对象并导致proxy对象创建的过程称为织入.

Introduction(引入):在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.

2、创建工程

(1) 导入AOP编程的相关 jar 包,如下图所示:

QQ截图20140226123151

(2) 要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:

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

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

具体如下:

 

(3) Spring提供了两种切面声明方式,实际工作中我们可以选用其中一种:

<1>基于XML配置方式声明切面。
<2>基于注解方式声明切面。

(4) 基于注解方式声明切面

首先启动对@AspectJ注解的支持,在配置文件中加上 <aop:aspectj-autoproxy/>

具体如下:

 

(5) 创建包类

<1> 接口

 

<2> 实现接口类


<3> 切面类

 

<4> 测试类

<5> XML 文件

<?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.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
        <!-- 基于注解方式声明切面, 首先启动对@AspectJ注解的支持 -->
         <aop:aspectj-autoproxy/>
         <bean id="personService" class="org.learn.spring.service.impl.PersonServiceImpl"></bean>
         <bean class="com.learn.spring.service.MyInterceptor"></bean>
</beans>

 

(6) 测试,控制台打印出:

QQ截图20140226125051

posted on 2014-04-03 21:43  hwlsniper  阅读(168)  评论(0)    收藏  举报