• aop编程 环绕round


     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 http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">
     5 
     6 <!--     配置代理关系               -->
     7 <!-- 目标类      被代理人对象 -->
     8 <bean id="target" class="dao.imp.UserDaoImp"></bean>
     9 <!-- 切面  方面代码(通知代码)-->
    10 <bean id="roundAdvice" class="aop.RoundAdvice"></bean>
    11 
    12 <!-- 代理类   代理人对象-->
    13 <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
    14 
    15 
    16 <!-- 代理用到的接口     拦截者:指明方法代码的封装对象-->
    17 <property name="proxyInterfaces">
    18 <list>
    19 <value>dao.UserDao</value>
    20 </list>
    21 </property>
    22 
    23 <!-- 目标对象   指明被代理人-->
    24 <property name="target" ref="target">
    25 </property>
    26 
    27 
    28 <!-- 切面 拦截者  :指明方面代码的封装对象 -->
    29 <property name="interceptorNames">
    30 <list>
    31 <!-- <value>beforeAdvice</value> -->
    32 <value>pointcutAndAdvice</value>
    33 </list>
    34 </property>
    35 </bean>
    36 <!-- 配置带切入点的bean 
    37 进一步封装代码 ,提供过滤被代理方法的功能 。效果  :被代理接口中方法集合的子集被代理执行--> 
    38 <bean id="pointcutAndAdvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    39     <property name="advice" ref="roundAdvice"></property>
    40     <property name="patterns">
    41         <list>
    42             <value>dao.UserDao.saveUser</value>
    43             <value>dao.UserDao.deleteUser</value>
    44         </list>
    45     </property>
    46 </bean>
    47 </beans>

    applicationContext-round.xml

    package aop;
    
    import org.aopalliance.intercept.MethodInterceptor;
    import org.aopalliance.intercept.MethodInvocation;
    
    
    
    public class RoundAdvice implements MethodInterceptor{
    
    	@Override
    	public Object invoke(MethodInvocation method) throws Throwable {
    		// TODO Auto-generated method stub
    		System.out.println("开始");
    		Object obj=method.proceed();
    		System.out.println("结束");
    		
    		return null;
    	}
    
    
    
    
    
    }
    

     RoundAdvice.java

     1 import org.springframework.context.ApplicationContext;
     2 import org.springframework.context.support.ClassPathXmlApplicationContext;
     3 
     4 import dao.UserDao;
     5 
     6 
     7 public class TestAop {
     8 
     9     public static void main(String[] args) {
    10         // TODO Auto-generated method stub
    11         ApplicationContext ctx=new ClassPathXmlApplicationContext("/applicationContext-aop.xml");
    12         //获取文件
    13         UserDao dao=(UserDao) ctx.getBean("proxy");
    14         //得到代理
    15         dao.saveUser();
    16         dao.deleteUser();
    17         dao.findUser();
    18     }
    19 
    20 }

    test.java

  • 相关阅读:
    你应该知道的那些Android小经验
    ArrayList和LinkedList的区别
    Android 监听apk安装替换卸载广播
    关于 Android 进程保活,你所需要知道的一切
    Java Thread 总结
    Android分包原理
    Flask web开发 处理POST请求(登录案例)
    Flask web开发 简单介绍
    编写存储过程导出oracle表数据到多个文本文件
    Linux 特殊符号使用: 倒引号`的使用
  • 原文地址:https://www.cnblogs.com/tianhao/p/aop-round.html
Copyright © 2020-2023  润新知