Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator
文章目录
- 导读
- 实例
导读
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相关推荐
- Spring AOP自动创建代理 和 ProxyFactoryBean创建代理
Advice 通知类型 AOP联盟为通知Advice定义了org.aopalliance.aop.Interface.Advice,Spring按照通知Advice在目标方法的连接点位置,可以分为5种 ...
- Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator
文章目录 导读 概述 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Defa ...
- Spring-AOP 自动创建代理之BeanNameAutoProxyCreator
文章目录 导读 实例 导读 Spring-AOP 自动创建代理 Spring-AOP 自动创建代理之BeanNameAutoProxyCreator Spring-AOP 自动创建代理之Default ...
- Spring-AOP 自动创建代理
导读 概述 实现类介绍 BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator AnnotationAwareAspectJAutoProxyC ...
- Spring : Spring Aop CGLIB动态代理调用过程
1.美图 2.概述 CGLIB动态代理参考: CGLIB动态代理 CGLIB原理解析参考:CGLIB原理解析 3.分析 Spring AOP CGLIB动态代理调用过程分析,CGLIB动态代理调用过程 ...
- SpringBoot/Spring AOP默认动态代理方式
Spring 5.x中AOP默认依旧使用JDK动态代理 SpringBoot 2.x开始,AOP为了解决使用JDK动态代理可能导致的类型转换异常,而使用CGLIB. 在SpringBoot 2.x中, ...
- 【Spring AOP】静态代理设计模式、Spring 动态代理开发详解、切入点详解(切入点表达式、切入点函数)
AOP 编程 静态代理设计模式 1. 为什么需要代理设计模式 2. 代理设计模式 名词解释 代理开发的核心要素 静态代理编码 静态代理存在的问题 Spring 动态代理开发 搭建开发环境 Spring ...
- spring—AOP 的动态代理技术
AOP 的动态代理技术 常用的动态代理技术 JDK 代理 : 基于接口的动态代理技术 cglib 代理:基于父类的动态代理技术 JDK 代理 public class proxy {@Testpubl ...
- SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录
1.开始 在Springboot框架中引入AOP <dependency><groupId>org.springframework.boot</groupId>&l ...
最新文章
- 决策树算法(六)——构建决策树
- 2013年第10周三低潮
- node 同步js代码-超越昨天的自己系列(5)
- Python 【大风号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
- 蘑菇街2015校招 Java研发笔试题 详解,2015java
- 带有WildFly Swarm的远程JMS
- 前端为什么非要动静分离 说一下CDN托管的意义
- java 自定义 operator_见微知著——从自定义类型的operator==说起
- nod32 激活码 地址 NOD 32
- CommandName与CommandArgument
- ffmpeg音视频剪辑常用操作
- 【BST】Treap
- Hyperic HQ产品功能列表
- kubernetes pod 挂载 ceph rbd
- 大鱼吃小鱼html代码,Flash游戏--大鱼吃小鱼(一)
- vue生成证书模板 并支持图片和PDF格式下载的小demo
- 人民日报聚焦绿之韵,树立民族品牌文化之魂
- 胡巴动态表情包 捉妖记胡巴QQ表情无水印下载
- 小马哥---高仿三星Galaxy J100H主板型号J7210国外版 刷机拆机图
- 揭秘苹果回收实验室:87%的旧iPhone被翻新重售
热门文章
- C++虚继承下的内存模型(一)
- 怎么学python知乎_你们都是怎么学 Python 的?
- 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)
- pytorch笔记:实现简易LSTM
- 深度学习核心技术精讲100篇(四十九)-深度学习之关联规则
- 听说你想去大厂看妹子,带你看看美团后端开发实习岗详细面经
- WebServices 简介
- 什么是document对象?如何获取文档对象上的元素?_javascript自学记录:Document类型...
- 中小型研发团队架构实践:电商如何做企业总体架构?
- 使用 Spring HATEOAS 开发 REST 服务--转