Spring之AOP XML方式 – JAVA編程語言程序開發技術文章

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的專欄

發佈留言