当前位置:编程学习 > XML/UML >>

Spring之AOP XML方式

xml方式和Annotation方式差不多,只需改动代理类,和配置文件即可。

package aspect; 
 
import org.aspectj.lang.annotation.After; 
import org.aspectj.lang.annotation.AfterReturning; 
import org.aspectj.lang.annotation.AfterThrowing; 
import org.aspectj.lang.annotation.Around; 
import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 
import org.aspectj.lang.annotation.Pointcut; 
 
 
public class UserDaoAspect {  
 
    public void startSay(){  //告知在xml文件中配置为前置通知 
        System.out.println("Good Morning"); 
    } 
    public void endSay(){   //告知在xml文件中配置为后置通知  
        System.out.println("bye bye"); 
    } 

applicationContext.xml
 

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 
     
    <bean id="userDao" class="dao.UserDaoImpl" /> 
     
    <bean id="aspectj" class="aspect.UserDaoAspect"></bean> 
     
    <aop:config> 
       <aop:aspect id="myaspectj" ref="aspectj"> 
          <aop:pointcut expression="execution(* dao..*.*(..))" id="mypointcut"/> 
          <aop:before method="startSay" pointcut-ref="mypointcut"/><!--  前置通知 --> 
          <aop:after method="endSay" pointcut-ref="mypointcut"/> <!-- 后置通知 --> 
       </aop:aspect> 
    </aop:config> 
</beans> 

测试类

package test; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
import dao.UserDao; 
import dao.UserDaoImpl; 
 
public class Test { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); 
        UserDao dao=(UserDao)context.getBean("userDao"); 
        dao.addUser(); 
    } 
 

两种方式效果是一样的

摘自 itmyhome的专栏

补充:软件开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,