Spring代理生成器

1.创建需要的dao接口

2.创建需要的daoImpl实现类

3.创建前置增强类

4.创建spring.xml文件

<!--  这个案例 需要解决的问题:
一个代理工厂 配置 多个目标对象!-->
<!--01.配置目标对象-->
<bean id="userDao" class="com.xdf.dao.UserDaoImpl"/>
<!--为了 测试 会给 所有的bean注入增强-->
<bean id="userDao2" class="com.xdf.dao.UserDaoImpl"/> <!--02.配置相应的增强类-->
<bean id="before" class="com.xdf.dao.BeforeAdvice"/> <!--03.设置顾问 让目标对象和通知产生关系-->
<bean id="myAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
<!--配置通知-->
<property name="advice" ref="before"/>
<!--配置切入点-->
<property name="mappedName" value="sleep"/>
</bean> <!--04.配置自动的代理生成器 底层其实就是执行了bean的后处理器
弊端: 就是会给容器中所有的bean 都注入增强! 不能取消!-->
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

5. 创建测试类

 @Test
public void defaultTest(){
ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
UserDao dao= context.getBean("userDao", UserDao.class);
//UserDao dao= context.getBean("userDao2", UserDao.class); 也会被注入增强方法
dao.eat();
dao.sleep();
}

  我们肯定不需要容器管理的所有bean都被增强! 这时候就需要使用另外一个BeanNameAutoProxyCeator!

6. 创建beanName.xml文件

7. 创建测试方法

Spring(十一)-- Spring代理生成器的更多相关文章

  1. SSM-Spring-15:Spring中名称自动代理生成器BeanNameAutoProxyCreator

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 名称自动代理生成器:BeanNameAutoProxyCreator 为了更好的测试,我放了俩个接口,俩个实现 ...

  2. 使用BeanNameAutoProxyCreator实现spring的自动代理

    提到代理,我们可以使用ProxyBeanFactory,并配置proxyInterfaces,target和interceptorNames实现,但如果需要代理的bean很多,无疑会对spring配置 ...

  3. Spring框架_代理模式(静态代理,动态代理,cglib代理)

    共性问题: 1. 服务器启动报错,什么原因? * jar包缺少.jar包冲突 1) 先检查项目中是否缺少jar包引用 2) 服务器: 检查jar包有没有发布到服务器下:                 ...

  4. spring设计模式_代理模式

    代理模式应该是Spring核心设计模式之一了 先说下代理模式特性: 1.有代理人和被代理人 2.对于被代理的人来说,这件事情是一定要做的,但是我又不想做,所有就找代理人来做. 3.需要获取到被代理人的 ...

  5. spring aop 的代理工厂

    参考 https://docs.spring.io/spring/docs/4.3.11.RELEASE/spring-framework-reference/htmlsingle/#aop-unde ...

  6. Spring中的代理模式

    代理模式 所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式是一种 ...

  7. spring AOP 动态代理和静态代理以及事务

    AOP(Aspect Oriented Programming),即面向切面编程 AOP技术,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装 ...

  8. Hibernate 延迟加载的代理模式 和 Spring AOP的代理模式

    Hibernate 延迟加载的代理模式 和 Spring AOP的代理模式 主题 概念 Hibernate 延迟加载的代理模式 Spring AOP的代理模式 区别和联系 静态代理和动态代理 概念 代 ...

  9. 解决spring使用动态代理

    解决spring使用动态代理类型转换失败的问题--java.lang.ClassCastException: com.sun.proxy.$Proxy$ cannot be cast to ... 转 ...

随机推荐

  1. mysql中in查询中排序

    mysql中in查询条件的时候,很多时候排序是不规则的,如何按照in里面的条件进行排序呢? mysql中给出了办法,在in后面加order by field,order by field的首个条件是按 ...

  2. C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】

    由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...

  3. webpack4(4.41.2) 打包出现 TypeError this.getResolve is not a function

    报错问题: webpack 打包出现 TypeError: this.getResolve is not a function 环境: nodejs 12.13.0 npm 6.12.0 webpac ...

  4. Java集合框架之接口Collection源码分析

    本文我们主要学习Java集合框架的根接口Collection,通过本文我们可以进一步了解Collection的属性及提供的方法.在介绍Collection接口之前我们不得不先学习一下Iterable, ...

  5. 如何使用Heartbeat,组建一个高可用性的mysql集群

    转了好多次帖子,其实就是为了使用heartbeat来搭建mysql集群,网上很多都是用make来生成RPM来安装,我也找了很多资料,mysql 自带的cluster用户不满意,只能再次vmware虚拟 ...

  6. koa 基础(二十四)封装 DB 库 --- 新增数据、更新数据、删除数据

    1.根目录/module/db.js /** * DB库 */ var MongoClient = require('mongodb').MongoClient; var Config = requi ...

  7. leetcode-hard-array-76. Minimum Window Substring -NO

    mycode 不会.. 参考: class Solution(object): def minWindow(self, s, t): """ :type s: str : ...

  8. Numpy中matrix()和array()的区别

    matrix() 和 array() 的区别,主要从以下方面说起: 1. 矩阵生成方式不同 import numpy as np a1 = np.array([[1, 2], [3, 4]]) b1 ...

  9. Selenium 2自动化测试实战25(自动化测试模型)

    一.自动化测试模型 自动化测试模型介绍:线性测试.模块化驱动测试.数据驱动测试和关键字驱动测试 线性测试:每个测试脚本相对独立,且不产生其他依赖与调用,只是单纯的来模拟用户完整的操作场景.模块化驱动测 ...

  10. tcpdump分析tcp连接的建立、传输和关闭

    http://note.youdao.com/noteshare?id=2aa0379d1e4b3bcddc26174861ffe09a