Spring中AOP的Introductions翻译成中文为简介。
    Introductions允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象。
    先看下面的例子:

配置文件

<?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.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">    <bean id="plane" class="com.wry.bean.Plane"></bean> <bean id="myAspect" class="com.wry.aspect.MyAspect"></bean> <aop:config><aop:aspect id="myAspectAOP" ref="myAspect"><aop:declare-parents types-matching="com.wry.bean.Plane(*)" implement-interface="com.wry.bean.Vehicle"default-impl="com.wry.bean.VehicleImpl"/>  </aop:aspect></aop:config>
</beans>

Plane.java

package com.wry.bean;public class Plane {public void fly(){System.out.println("plane flying");}
}

Vehicle.java

package com.wry.bean;public interface Vehicle {public void drive();
}

VehicleImpl.java

package com.wry.bean;public class VehicleImpl implements Vehicle{@Overridepublic void drive() {System.out.println("vehicle driving");}}

Demo.java

package com.wry.test;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.wry.bean.Vehicle;public class Demo {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml");   Vehicle vehicle = (Vehicle)context.getBean("plane"); vehicle.drive();}
}

程序输出

vehicle driving

由<aop:aspect>中的<aop:declare-parents>元素声明该元素用于声明所匹配的类型拥有一个新的parent。

这句话这样理解,在<aop:declare-parents>标签中,types-matching是Plane类,implement-interface是Vehicle接口。在Demo类中Vehicle vehicle = (Vehicle)context.getBean("plane"); 将plane对象转化为vehicle对象而且不会报错,意思是给Plane类增加了一个父类Vehicle。上面“提供了一个接口实现类来代表这些对象”,即用Vehicle接口代表plane对象,给它增加一个父类才能转化。

Spring中AOP的Introductions使用介绍相关推荐

  1. spring中AOP(面向切面编程)

    spring中AOP(面向切面编程) 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是spring框架中的一个重要内容 ...

  2. spring中aop事务

    文章目录 事务 为什要用到Spring中AOP事务 事物的特性 ACID 事务并发问题 事务的隔离级别 spring事务管理 事务操作 事务操作对象 spring管理事务的属性介绍 spring管理事 ...

  3. Spring中AOP源码剖析

    Spring中AOP源码剖析 关键词 aop的增强发生在后置处理器中(没有循环依赖) 最终增强是通过 递归调用 ,层层增强 一.环境准备 1.1 bean和接口 public class AopBea ...

  4. Spring中AOP相关的API及源码解析,原来AOP是这样子的

    前言 之所以写这么一篇文章主要是因为下篇文章将结束Spring启动整个流程的分析,从解析配置到创建对象再到属性注入最后再将创建好的对象初始化成为一个真正意义上的Bean.因为下篇文章会涉及到AOP,所 ...

  5. Spring中AOP的使用

    问题:什么是AOP? 答:AOP基本概念:Aspect-Oriented Programming,面向方面编程的简称,Aspect是一种新的模块化机制,用来描述分散在对象.类或方法中的横切关注点(cr ...

  6. Spring中AOP实现

    1.什么是SpringAOP 什么是aop:Aspect Oriented Programming的缩写,面向切面编程,通过预编译和动态代理实现程序功能的 统一维护的一种技术 主要功能:日志记录,性能 ...

  7. 动态代理以及对应Spring中AOP源码分析

    AOP(面向切面编程)在Spring中是被广泛应用的(例如日志,事务,权限等),而它的基本原理便是动态代理. 我们知道动态代理有两种:基于JDK的动态代理以及基于CGlib动态代理.以下是两种动态代理 ...

  8. spring中AOP动态代理的两种方式

    AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...

  9. Spring中AOP开发步骤

    AOP:不是由Spring定义.AOP联盟的组织定义.Spring中的通知:(增强代码)前置通知 org.springframework.aop.MethodBeforeAdvice* 在目标方法执行 ...

  10. spring中aop默认使用jdk动态代理,springboot2以后默认使用cglib来实现动态代理详解

    Spring5 AOP 默认使用 Cglib 了?我第一次听到这个说法是在一个微信群里: 真的假的?查阅文档 刚看到这个说法的时候,我是保持怀疑态度的. 大家都知道 Spring5 之前的版本 AOP ...

最新文章

  1. 深入理解Java虚拟机——第二章——Java内存区域与内存溢出异常
  2. 发表论文不用愁,十大技巧治秃头
  3. 如何把选择屏幕放到标准屏幕上
  4. c#中 cmd.parameters.add() 方法的问题
  5. 4.8-全栈Java笔记:包机制
  6. c语言水仙花数(输入判断),用c语言判断一个数是否为水仙花数?
  7. java实现rabbitMQ延时队列详解以及spring-rabbit整合教程
  8. MongoDB集群——副本集
  9. PHP 过滤字符串特殊符号
  10. BZOJ 3251 树上三角形
  11. 【Unity3D插件】Highlighting System插件分享《物体高亮插件》
  12. Hutool学习 —— 设置文件-Setting
  13. solr facet查询及solrj 读取facet数据
  14. 欧姆龙PLC分频电路
  15. CE实战:修改植物大战僵尸中阳光数值
  16. 怎么把wav转换成mp3格式,5种方法值得收藏
  17. jupyter notebook 中import torchvision提示ImportError: DLL load failed: 找不到指定的模块
  18. 英语学习之沪江整理 20141101
  19. 企业微信消息推送卡片按钮互动的使用
  20. ntp和chrony

热门文章

  1. 动画设计基础(第二节)-3d max2014-骨骼飘带(错帧)
  2. 如何选用GPU云服务器?
  3. CTF之misc-图片隐写
  4. Python恶搞搞机程序弹窗
  5. STC12C5A60S2
  6. 使用Python爬虫自动爬取沪港通每日持股数据
  7. Java使用纯真IP库获取IP对应省份和城市
  8. 中国重型包装行业竞争趋势与发展规模分析报告2022-2028年版
  9. Android中跳转应用市场
  10. 【小5聊】CSS基础之设置小箭头图标