zoukankan      html  css  js  c++  java
  • spring半自动代理


    1、被代理类接口Person.java

     1 package com.xiaostudy;
     2 
     3 /**
     4  * @desc 被代理类接口
     5  * 
     6  * @author xiaostudy
     7  *
     8  */
     9 public interface Person {
    10 
    11     public void add();
    12     public void update();
    13     public void delete();
    14 }

    2、被代理类PersonImple.java

     1 package com.xiaostudy;
     2 
     3 /**
     4  * @desc 被代理类
     5  * 
     6  * @author xiaostudy
     7  *
     8  */
     9 public class PersonImple implements Person {
    10 
    11     /**
    12      * @desc 实现接口方法
    13      */
    14     public void add() {
    15         System.out.println("add()>>>>>>>>");
    16     }
    17 
    18     @Override
    19     public void update() {
    20         System.out.println("update()>>>>>>>>");
    21     }
    22 
    23     @Override
    24     public void delete() {
    25         System.out.println("delete()>>>>>>>>");
    26     }
    27     
    28 }

    3、切面类MyAdvice.java

     1 package com.xiaostudy;
     2 
     3 import org.aopalliance.intercept.MethodInterceptor;
     4 import org.aopalliance.intercept.MethodInvocation;
     5 
     6 /**
     7  * @desc 切面类
     8  * 
     9  * @author xiaostudy
    10  *
    11  */
    12 public class MyAdvice implements MethodInterceptor {
    13     
    14     /**
    15      * @desc 环绕通知
    16      */
    17     @Override
    18     public Object invoke(MethodInvocation method) throws Throwable {
    19         System.out.println("日记开始>>>>>>>>>>>");
    20         method.proceed();
    21         System.out.println("日记结束<<<<<<<<<<<<");
    22         return null;
    23     }
    24 
    25 }

    4、spring配置文件applicationContext.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xsi:schemaLocation="http://www.springframework.org/schema/beans 
     5                               http://www.springframework.org/schema/beans/spring-beans.xsd">
     6     <!-- 创建被代理类 -->
     7     <bean id="person" class="com.xiaostudy.PersonImple"></bean>
     8     <!-- 创建切面类 -->
     9     <bean id="advice" class="com.xiaostudy.MyAdvice"></bean>
    10     <!-- 创建代理类 -->
    11     <bean id="proxyPerson" class="org.springframework.aop.framework.ProxyFactoryBean">
    12         <!-- 把被代理类接口引入进来 -->
    13         <property name="interfaces" value="com.xiaostudy.Person"></property>
    14         <!-- 把被代理类引入进来 -->
    15         <property name="target" ref="person"></property>
    16         <!-- 把切面类引入进来,是以字符串形式引入,所以是用value,而不是用ref -->
    17         <property name="interceptorNames" value="advice"></property>
    18         <!-- 非必须项:value为true表示强制使用cglib代理 -->
    19         <property name="optimize" value="true"></property>
    20     </bean>
    21 </beans>

    5、测试类Test.java

     1 package com.xiaostudy;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 /**
     7  * @desc 测试类
     8  * 
     9  * @author xiaostudy
    10  *
    11  */
    12 public class Test {
    13 
    14     public static void main(String[] args) {
    15         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    16         Person person = ac.getBean("proxyPerson", Person.class);
    17         person.add();
    18         person.update();
    19         person.delete();
    20     }
    21 
    22 }

  • 相关阅读:
    电脑使用优化工具方法
    算法练习的网站
    golang 实现链表反转打印
    刷过的算法题
    Symfony2框架实战教程——第六天#Alt:验证码
    Symfony2框架实战教程——第六天:模板重载与翻译
    [Symfony2] 在命令或控制器里跑另一个命令的N种方法
    Symfony2框架实战教程——第五天:KnpMenuBundle创建菜单项+结合Twitter Boostrap3
    Symfony2框架实战教程——第四天#Alt:用FOSUserBundle实现用户注册和登录
    Symfony2框架实战教程——第四天:用HWIOAuthBundle实现第三方登录
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/9535357.html
Copyright © 2011-2022 走看看