文章目录

  • 导读
  • 实例

导读

Spring-AOP 自动创建代理

Spring-AOP 自动创建代理之BeanNameAutoProxyCreator

Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator

Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator


实例

代码已托管到Github—> https://github.com/yangshangwei/SpringMaster

准备工作参考 :http://blog.csdn.net/yangshangwei/article/details/77519375#准备工作

接口

package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf;public interface Waiter {public void greetTo(String name);public void serverTo(String name);
}

POJO

package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf;public class NaiveWaiter implements Waiter {@Overridepublic void greetTo(String name) {System.out.println("NaiveWaiter Greet To " + name);}@Overridepublic void serverTo(String name) {System.out.println("NaiveWaiter Server To " + name);}}

切面POJO

package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf;import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;/*** * * @ClassName: PreGreetingAspect* * @Description: 切面类* * @author: Mr.Yang* * @date: 2017年8月24日 下午3:21:15*/// 通过@Aspect将PreGreetingAspect标注为一个切面
@Aspect
public class PreGreetingAspect {// 定义切点和增强类型@Before("execution(* greetTo(..))")public void beforeGreeting() {// 增强的横切逻辑System.out.println("How are you ?");}
}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 通过配置使用@AspectJ --><!-- 目标Bean -->
<bean id="waiter" class="com.xgj.aop.spring.advisor.aspectJ.aspectJByConf.NaiveWaiter"/>
<!-- 使用了@AspectJ注解的切面类 -->
<bean class="com.xgj.aop.spring.advisor.aspectJ.aspectJByConf.PreGreetingAspect"/>
<!-- 自动代理创建器,自动将@AspectJ注解切面类织入目标Bean中 -->
<bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/></beans>

单元测试

package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** * * @ClassName: PreGreetingAspectTest* * @Description:* * @author: Mr.Yang* * @date: 2017年8月24日 下午3:21:29*/
public class PreGreetingAspectTest {@Testpublic void test() {ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com/xgj/aop/spring/advisor/aspectJ/aspectJByConf/conf-aspectJ.xml");Waiter naiveWaiter = ctx.getBean("waiter", Waiter.class);naiveWaiter.greetTo("XiaoGongJiang");naiveWaiter.serverTo("XiaoGongJiang");}
}

运行结果:

2017-08-24 17:41:16,210  INFO [main] (AbstractApplicationContext.java:583) - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@24177697: startup date [Thu Aug 24 17:41:16 BOT 2017]; root of context hierarchy
2017-08-24 17:41:16,609  INFO [main] (XmlBeanDefinitionReader.java:317) - Loading XML bean definitions from class path resource [com/xgj/aop/spring/advisor/aspectJ/aspectJByConf/conf-aspectJ.xml]
How are you ?
NaiveWaiter Greet To XiaoGongJiang
NaiveWaiter Server To XiaoGongJiang

可以看到greetTo被正确的织入了增强.

Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator相关推荐

  1. Spring AOP自动创建代理 和 ProxyFactoryBean创建代理

    Advice 通知类型 AOP联盟为通知Advice定义了org.aopalliance.aop.Interface.Advice,Spring按照通知Advice在目标方法的连接点位置,可以分为5种 ...

  2. Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator

    文章目录 导读 概述 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Defa ...

  3. Spring-AOP 自动创建代理之BeanNameAutoProxyCreator

    文章目录 导读 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Default ...

  4. Spring-AOP 自动创建代理

    导读 概述 实现类介绍 BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator AnnotationAwareAspectJAutoProxyC ...

  5. Spring : Spring Aop CGLIB动态代理调用过程

    1.美图 2.概述 CGLIB动态代理参考: CGLIB动态代理 CGLIB原理解析参考:CGLIB原理解析 3.分析 Spring AOP CGLIB动态代理调用过程分析,CGLIB动态代理调用过程 ...

  6. SpringBoot/Spring AOP默认动态代理方式

    Spring 5.x中AOP默认依旧使用JDK动态代理 SpringBoot 2.x开始,AOP为了解决使用JDK动态代理可能导致的类型转换异常,而使用CGLIB. 在SpringBoot 2.x中, ...

  7. 【Spring AOP】静态代理设计模式、Spring 动态代理开发详解、切入点详解(切入点表达式、切入点函数)

    AOP 编程 静态代理设计模式 1. 为什么需要代理设计模式 2. 代理设计模式 名词解释 代理开发的核心要素 静态代理编码 静态代理存在的问题 Spring 动态代理开发 搭建开发环境 Spring ...

  8. spring—AOP 的动态代理技术

    AOP 的动态代理技术 常用的动态代理技术 JDK 代理 : 基于接口的动态代理技术 cglib 代理:基于父类的动态代理技术 JDK 代理 public class proxy {@Testpubl ...

  9. SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录

    1.开始 在Springboot框架中引入AOP <dependency><groupId>org.springframework.boot</groupId>&l ...

最新文章

  1. 决策树算法(六)——构建决策树
  2. 2013年第10周三低潮
  3. node 同步js代码-超越昨天的自己系列(5)
  4. Python 【大风号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  5. 蘑菇街2015校招 Java研发笔试题 详解,2015java
  6. 带有WildFly Swarm的远程JMS
  7. 前端为什么非要动静分离 说一下CDN托管的意义
  8. java 自定义 operator_见微知著——从自定义类型的operator==说起
  9. nod32 激活码 地址 NOD 32
  10. CommandName与CommandArgument
  11. ffmpeg音视频剪辑常用操作
  12. 【BST】Treap
  13. Hyperic HQ产品功能列表
  14. kubernetes pod 挂载 ceph rbd
  15. 大鱼吃小鱼html代码,Flash游戏--大鱼吃小鱼(一)
  16. vue生成证书模板 并支持图片和PDF格式下载的小demo
  17. 人民日报聚焦绿之韵,树立民族品牌文化之魂
  18. 胡巴动态表情包 捉妖记胡巴QQ表情无水印下载
  19. 小马哥---高仿三星Galaxy J100H主板型号J7210国外版 刷机拆机图
  20. 揭秘苹果回收实验室:87%的旧iPhone被翻新重售

热门文章

  1. C++虚继承下的内存模型(一)
  2. 怎么学python知乎_你们都是怎么学 Python 的?
  3. 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)
  4. pytorch笔记:实现简易LSTM
  5. 深度学习核心技术精讲100篇(四十九)-深度学习之关联规则
  6. 听说你想去大厂看妹子,带你看看美团后端开发实习岗详细面经
  7. WebServices 简介
  8. 什么是document对象?如何获取文档对象上的元素?_javascript自学记录:Document类型...
  9. 中小型研发团队架构实践:电商如何做企业总体架构?
  10. 使用 Spring HATEOAS 开发 REST 服务--转