最近学习了spring的面向切面编程,在网上看到猴子偷桃的例子,觉得这种方式学习比书本上讲解有趣多了,也便于理解。现在就来基于猴子偷桃写个基本的例子。

maven工程:

aaarticlea/png;base64,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" alt="" />

1、猴子偷桃子,这里就有两个类出现,一类是猴子,一类是桃子。如果以后需要扩展,来个狼偷羊,怎么办呢?因此为了扩展,可以声明接口Stolen,表现偷的行为。

Stolen接口:

package com.test.demo.stolen;

public interface Stolen {
    /**
     * 偷桃子
     * 
     * @date 2014-4-1
     */
    public void stolens(String name,Peaces peace);
}

猴子需要实现这个Stolen接口,表示猴子具有偷的行为,Monkey类:

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;
    }
}

2、猴子偷的桃子具有哪些属性呢?它的大小?品种?因此声明桃子的对象Peace(桃子的英文为peach,写错了,囧~):

package com.test.demo.stolen;

/**
 * 桃子
 * TODO Comment of Peaces
 *
 */
public class Peaces {

/**
     * 品种
     */
    private String name;
    /**
     * 大小
     */
    private String type;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
}

3、守护者来了,需要保护桃子不被偷,Protecter类:

package com.test.demo.protect;

import org.springframework.stereotype.Component;

import com.test.demo.stolen.Peaces;

/**
 * 守护者,是一个切面
 * TODO Comment of Protecter
 *
 */
@Component("protecter")
public class Protecter {
         public void before(String name,Peaces peace){
        System.out.println("守护者在守护桃子"+peace.getName()+"...");
    }
    
    public void after(String name,Peaces peace){
        System.out.println("守护者发现猴子"+name+"在偷桃子"+peace.getName());
    }
}

4、现在需要在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>
        
    <aop:config>
        <!--切点:偷的行为  -->
        <aop:pointcut expression="execution(* com.test.demo.stolen.Stolen.stolens(String,com.test.demo.stolen.Peaces)) and args(name,peace)" id="stolen"/>
        <!--切面: 守护者 -->
        <aop:aspect ref="protecter">
            <!-- 偷之前,守护者的行为 -->
            <aop:before method="before" pointcut-ref="stolen" />
            <!-- 偷之后,守护者的行为 -->
            <aop:after method="after" pointcut-ref="stolen"/>
        </aop:aspect>
    </aop:config>
</beans>

在运行时我遇到了以下两个问题:

1)、在声明切点stolen时,切点表达式中传递了参数name和peace,Peaces的类型此时需要连同包名全部声明,否则会报错:

warning no match for this type name:peace Xlint:invalidAbsoluteTypeName

2)、Protecter类中的before和after方法,都要有参数传递,即before(String name,Peaces peace)、after(String name,Peaces peace)。

如果参数不完整,也会报错:

warning no match for this type name:peace Xlint:invalidAbsoluteTypeName  或
warning no match for this type name:name Xlint:invalidAbsoluteTypeName

5、写个测试类,来测试猴子偷桃:

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="" />

至此,猴子偷桃就结束了。但是现在是有人来偷桃子,怎么处理呀?诶,之前为了方便扩展,声明了个接口Stolen,既然是人来偷桃子,那我声明个Person类,并且让Person实现Stolen接口不就行了:

package com.test.demo.stolenImpl;

import org.springframework.stereotype.Component;

import com.test.demo.stolen.Peaces;
import com.test.demo.stolen.Stolen; @Component("person")
public class Person implements Stolen{     public void stolens(String name,Peaces peace){
        System.out.println("这个人 "+name+" 正在偷桃子,桃子是:"+peace.getName()+" 大小:"+peace.getType());
    }
}

写个测试类来测试下:

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 PersonStolenTest {     @Test
    public void testStolen() {
     ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
         Stolen m = (Stolen)ctx.getBean("person");
         Peaces p = new Peaces();
         p.setName("猕猴桃");
         p.setType("SMALL");
         m.stolens("小明",p);
    }
}

打印结果:

aaarticlea/png;base64,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" alt="" />

--------------------------------------分割线-------------------------------------------

又有个疑问,既然可扩展,那偷的不一定是桃子,也许是别的,这个怎么处理?

这时就要修改代码了,可以先声明一个接口,如Fruits,提取一些共有的属性。

当偷的是桃子,则声明类Peach,实现Fruits 接口,并可以创建桃子的一些私有属性。

其他也如是。

附带pom.xml中的声明:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>trainingTest</artifactId>
    <groupId>com.test.training</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>..</relativePath>
  </parent>
  <artifactId>AnnTest</artifactId>
  <packaging>war</packaging>
  
  <dependencies>
          <dependency>
              <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
            <version>3.2.3.RELEASE</version>
          </dependency>
         <dependency>  
           <groupId>org.springframework</groupId>  
           <artifactId>spring-core</artifactId>  
           <version>3.2.3.RELEASE</version>  
       </dependency>  
       
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.8</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
        </dependency>
  </dependencies>
</project>

如果没有aspectjweaver-1.6.8.jar包,会报缺少这个jar包哦~

利用例子来理解spring的面向切面编程的更多相关文章

  1. 利用例子来理解spring的面向切面编程(使用@Aspect)

    上篇的例子,自动装配和自动检测Bean是使用注解的方式处理的,而面向切面编程是使用aop标签处理的,给我感觉就像中西医参合一样. 现在就来优化优化,全部使用注解的方式处理. 1.工程图:

  2. Spring(4)——面向切面编程(AOP模块)

    Spring AOP 简介 如果说 IoC 是 Spring 的核心,那么面向切面编程就是 Spring 最为重要的功能之一了,在数据库事务中切面编程被广泛使用. AOP 即 Aspect Orien ...

  3. 详细解读 Spring AOP 面向切面编程(二)

    本文是<详细解读 Spring AOP 面向切面编程(一)>的续集. 在上篇中,我们从写死代码,到使用代理:从编程式 Spring AOP 到声明式 Spring AOP.一切都朝着简单实 ...

  4. Spring IOP 面向切面编程

    Spring IOP  面向切面编程 AOP操作术语 Joinpoint(连接点):所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.(类里面 ...

  5. 浅谈Spring AOP 面向切面编程 最通俗易懂的画图理解AOP、AOP通知执行顺序~

    简介 我们都知道,Spring 框架作为后端主流框架之一,最有特点的三部分就是IOC控制反转.依赖注入.以及AOP切面.当然AOP作为一个Spring 的重要组成模块,当然IOC是不依赖于Spring ...

  6. Spring AOP 面向切面编程入门

    什么是AOP AOP(Aspect Oriented Programming),即面向切面编程.众所周知,OOP(面向对象编程)通过的是继承.封装和多态等概念来建立一种对象层次结构,用于模拟公共行为的 ...

  7. 简单理解AOP(面向切面编程)

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP与OOP是面向不同领域的两种设计思想. ...

  8. Spring理论基础-面向切面编程

    AOP是Aspect-Oriented Programming的缩写,中文翻译是面向切面编程.作为Spring的特征之一,是要好好学习的. 首先面向切面编程这个名称很容易让人想起面向对象编程(OOP) ...

  9. 从源码入手,一文带你读懂Spring AOP面向切面编程

    之前<零基础带你看Spring源码--IOC控制反转>详细讲了Spring容器的初始化和加载的原理,后面<你真的完全了解Java动态代理吗?看这篇就够了>介绍了下JDK的动态代 ...

随机推荐

  1. python format 用法详解

    format 用法详解 不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 单个参数可以多次输出,参数顺序可以不相同 填充方式十分灵活,对齐方式十分强大 官方推荐用的方式,%方式将会在后面的版 ...

  2. HDU 3639 SCC Hawk-and-Chicken

    求SCC缩点,统计出每个SCC中的点的个数. 然后统计能到达u的最多的点的个数,可以反向建图,再dfs一遍统计出来. 最后说一下,有必要开一个标记数组,因为测试数据中有重边,结果无限WA. #incl ...

  3. springboot-vue-前后端数据交互

    前端项目: pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...

  4. web自动化之selenium

    一.Selenium(http://www.selenium.org/) Web自动化测试工具.它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里 ...

  5. [已解决] wordpress 修改 permalink 后 页面 404 问题

    功能说明 为了利于SEO优化,我们需要将地址设置为永久链接,在层级不要太深的情况下实现伪静态页面的目的,例如wordpress 默认页面地址为: https://www.ryanzoe.top/?p= ...

  6. 面试中注意3个javascript的问题

    JavaScript 是所有现代浏览器的官方语言.因此,各种语言的开发者面试中都会遇到 JavaScript 问题. 本文不讲最新的 JavaScript 库,通用开发实践,或任何新的 ES6 函数. ...

  7. 大数相减 C语言

    #include <stdio.h> #include <string.h> using namespace std; ],b[]; void Sub() { ; if(a = ...

  8. 【转】[重构]Primitive Obsession

    http://blog.csdn.net/wxr0323/article/details/7913950 Primitive Obsession(基本类型偏执) 偏执这个词实在是有点难懂.百度百科传送 ...

  9. Android监听键盘右下角确定键

    代码改变世界 Android监听键盘右下角确定键 kotlin写法 <EditText android:id="@+id/seachFriend" android:layou ...

  10. 【bzoj1925】[Sdoi2010]地精部落 组合数学+dp

    题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到 ...