码迷,mamicode.com
首页 > 编程语言 > 详细

Spring(十一)--代理生成器

时间:2018-09-16 15:37:05      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:mil   dao   method   ima   org   val   生成   void   管理   

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(十一)--代理生成器

标签:mil   dao   method   ima   org   val   生成   void   管理   

原文地址:https://www.cnblogs.com/fl72/p/9655848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!