上篇的例子,自动装配和自动检测Bean是使用注解的方式处理的,而面向切面编程是使用aop标签处理的,给我感觉就像中西医参合一样。
现在就来优化优化,全部使用注解的方式处理。
1、工程图:
aaarticlea/png;base64,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" alt="" />
2、Protecter的修改如下,Protecter声明了切点和通知,因此不需要在xml中配置切点和通知了。
package com.test.demo.protect;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import com.test.demo.stolen.Peaces;
/**
* 守护者,是一个切面
* TODO Comment of Protecter
*
*/
@Component("protecter")
@Aspect
public class Protecter {
@Pointcut("execution(* com.test.demo.stolen.Stolen.stolens(String,com.test.demo.stolen.Peaces)) and args(name,peace)")
//stolens()是切点的一个名称,类似于xml配置时指定的id一样
public void stolens(){
}
@Before("stolens() && args(name,peace)")
public void before(String name,Peaces peace){
System.out.println("守护者在守护桃子"+peace.getName()+"...");
}
@After("stolens() && args(name,peace)")
public void after(String name,Peaces peace){
System.out.println("守护者发现猴子"+name+"在偷桃子"+peace.getName());
}
}
2、Stolen 接口,未做任何修改:

package com.test.demo.stolen;
public interface Stolen {
/**
* 偷桃子
*
* @date 2014-4-1
*/
public void stolens(String name,Peaces peace);
}
3、Monkey实现Stolen接口,未做修改:

package com.test.demo.stolenImpl;
import org.springframework.stereotype.Component;
import com.test.demo.stolen.Peaces;
import com.test.demo.stolen.Stolen;
/**
* 猴子偷桃子
* TODO Comment of Monkey
*
*/
@Component("monkey")
public class Monkey implements Stolen{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void stolens(String name,Peaces peace){
System.out.println("猴子 "+name+" 正在偷桃子,桃子是:"+peace.getName()+" 大小:"+peace.getType());
this.name = name;
}
}
4、现在需要让Spring将Protecter应用成为一个切面。这个需要在Spring上下文中声明一个自动代理Bean。Spring中有个自动代理创建类:AnnotationAwareAspectJAutoProxyCreator.
这个类会代理一些Bean,这些Bean的方法需要与@AspectJ注解的Bean中所定义的切点相匹配。
在本例中,则表示:
AnnotationAwareAspectJAutoProxyCreator这个自动代理Bean,会找到使用@AspectJ注解的Bean。Protecter类使用了注解
@Component("protecter") :会自动将Protecter类检测为Bean
@Aspect:@AspectJ注解
因此,Protecter类满足了使用@AspectJ注解的Bean这个要求,@AspectJ注解的Bean中所定义的切点相匹配,这表示会找到Protecter类中定义的切点:
@Pointcut("execution(* com.test.demo.stolen.Stolen.stolens(String,com.test.demo.stolen.Peaces)) and args(name,peace)")
与这个切点相匹配的则是com.test.demo.stolen.Stolen.stolens(name,peace) 这个方法了。
所以,本例中AnnotationAwareAspectJAutoProxyCreator类会自动代理实现了接口Stolen的Bean.即Monkey类。
Spring为了简化声明,Spring在aop命名空间中更为简洁的声明方式为:
<aop:aspectj-autoproxy />
<aop:aspectj-autoproxy />会在Spring上下文中声明一个AnnotationAwareAspectJAutoProxyCreator类。
beans.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:context = "http://www.springframework.org/schema/context"
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/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
default-autowire="byName">
<!-- 注解,自动装配bean -->
<context:annotation-config />
<!-- 自动检测Bean -->
<context:component-scan base-package="com.test"></context:component-scan>
<!-- 自动代理Bean -->
<aop:aspectj-autoproxy />
</beans>
测试类及运行结果:
package com.test.demo;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.test.demo.stolen.Peaces;
import com.test.demo.stolen.Stolen;
public class MonkeyStokenTest {
@Test
public void testStolen() {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Stolen m = (Stolen)ctx.getBean("monkey");
Peaces p = new Peaces();
p.setName("水蜜桃");
p.setType("BIG");
m.stolens("小小",p);
}
}
aaarticlea/png;base64,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" alt="" />
- 利用例子来理解spring的面向切面编程
最近学习了spring的面向切面编程,在网上看到猴子偷桃的例子,觉得这种方式学习比书本上讲解有趣多了,也便于理解.现在就来基于猴子偷桃写个基本的例子. maven工程:
- Spring(4)——面向切面编程(AOP模块)
Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...
- 详细解读 Spring AOP 面向切面编程(二)
本文是<详细解读 Spring AOP 面向切面编程(一)>的续集. 在上篇中,我们从写死代码,到使用代理:从编程式 Spring AOP 到声明式 Spring AOP.一切都朝着简单实 ...
- Spring IOP 面向切面编程
Spring IOP 面向切面编程 AOP操作术语 Joinpoint(连接点):所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.(类里面 ...
- 浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOP、AOP通知执行顺序~
简介 我们都知道,Spring 框架作为后端主流框架之一,最有特点的三部分就是IOC控制反转.依赖注入.以及AOP切面.当然AOP作为一个Spring 的重要组成模块,当然IOC是不依赖于Spring ...
- Spring AOP 面向切面编程入门
什么是AOP AOP(Aspect Oriented Programming),即面向切面编程.众所周知,OOP(面向对象编程)通过的是继承.封装和多态等概念来建立一种对象层次结构,用于模拟公共行为的 ...
- 简单理解AOP(面向切面编程)
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP与OOP是面向不同领域的两种设计思想. ...
- Spring理论基础-面向切面编程
AOP是Aspect-Oriented Programming的缩写,中文翻译是面向切面编程.作为Spring的特征之一,是要好好学习的. 首先面向切面编程这个名称很容易让人想起面向对象编程(OOP) ...
- 从源码入手,一文带你读懂Spring AOP面向切面编程
之前<零基础带你看Spring源码--IOC控制反转>详细讲了Spring容器的初始化和加载的原理,后面<你真的完全了解Java动态代理吗?看这篇就够了>介绍了下JDK的动态代 ...
随机推荐
- Do not pour out HDU - 5954 数学积分
题目:题目链接 思路:纯高等数学问题,不过不是很好积分,具体积分思路及过程参考大佬博客——https://blog.csdn.net/danliwoo/article/details/53002695 ...
- nmap命令扫描存活主机
1.ping扫描:扫描192.168.0.0/24网段上有哪些主机是存活的: [root@laolinux ~]# nmap -sP 192.168.0.0/24 Starting Nmap 4. ...
- svn 命令管理
有时候测试环境会让更新到指定版本,用以验证问题或者其他原因 具体方法有两种: 方法1: svn merge回滚 1) 先 svn up,保证更新到最新的版本,如2106: 2) 然后用 svn log ...
- Python虚拟机之if控制流(一)
Python虚拟机中的if控制流 在所有的编程语言中,if控制流是最简单也是最常用的控制流语句.下面,我们来分析一下在Python虚拟机中对if控制流的实现 # cat demo.py a = 1 i ...
- CentOS-文件操作
centos彻底删除文件夹.文件命令(centos 新建.删除.移动.复制等命令: 1.新建文件夹 mkdir 文件名 新建一个名为test的文件夹在home下 view source1 mkdir ...
- Pycharm Django开发(一)设置开发环境
一 由于我是一个对开发环境有强迫症的人,在装完PYTHON 2.6 3.3 3.4中,在创建Django工程的时候,会出现N个版本的python,那么在这里可以设置你喜欢和要使用的版本.
- js实现获取当前时间是本月第几周的方法
这篇文章主要介绍了js实现获取当前时间是本月第几周的方法,涉及javascript针对日期及时间的相关操作技巧,非常简单实用,需要的朋友可以参考下. 本文实例讲述了js实现获取当前时间是本月第几周的方 ...
- (手写)mybatis 核心配置文件和接口不在同一包下的解决方案
smart-sh-mybatis项目 app.xml文件中此处配置为: <!-- 从整合包里找,org.mybatis:mybatis-spring:1.2.4 --> <!-- s ...
- c中#与##的应用思考
c中#与##的应用思考 原创 2014年02月25日 22:01:35 927 一. 思考出处 在读<<linux 0.12完全剖析>>初始化部分, init进程是通过fork ...
- Leetcode 424.替换后的最长重复字符
替换后的最长重复字符 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 注意:字符串长度 和 ...