spring-AspectJ異常通知

weixin_34205076發表於2017-11-14
一、建立專案
    專案名稱:spring101002
二、新增jar包
    1.在專案中建立lib目錄
        /lib
    2.在lib目錄下新增相關spring jar包
        --用於AspectJ
        com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
        spring-aspects-3.2.0.RELEASE.jar
        --用於切面程式設計
        com.springsource.org.aopalliance-1.0.0.jar
        commons-logging.jar
        junit-4.10.jar
        log4j.jar
        --用於切面程式設計
        spring-aop-3.2.0.RELEASE.jar
        spring-beans-3.2.0.RELEASE.jar
        spring-context-3.2.0.RELEASE.jar
        spring-core-3.2.0.RELEASE.jar
        spring-expression-3.2.0.RELEASE.jar
三、新增配置檔案
    1.在專案中建立conf目錄
        /conf
    2.在conf目錄下新增配置檔案
        配置檔名稱: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:context="http://www.springframework.org/schema/context"
               xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        </beans>
四、建立業務bean
    1.在src目錄下建立業務bean包
        包名:cn.jbit.spring101002.service
    2.在包下建立業務bean
        業務bean名稱:UserService.java
        業務bean內容:
        /**
         * 被代理類
         * @author Administrator
         *
         */
        public class UserService {
            /**
             * 6.修改使用者
             */
            public void update(){
                System.out.println("執行修改使用者方法");
                int a = 1/0;
            }
        }
五.建立切面
    1)在src下建立包
        包名:cn.jbit.spring101002.aspect
    2)在包下建立自定義切面類
        切面名稱:AnnotationAspect.java
        切面內容:
        /**
         * 自定義切面
         * @author Administrator
         *
         */
        @Aspect
        public class AnnotationAspect {
            /**
             * 6.異常通知
             */
            @AfterThrowing(value="execution(* cn.jbit.spring101002.service.UserService.*(..))",throwing="throwable")
            public void exception(JoinPoint joinPoint,Throwable throwable){
                System.out.println("異常通知被執行,執行連線點:"+joinPoint+",產生異常"+throwable);
            }
        }
六、在核心配置檔案中新增配置資訊
    <!-- 配置被代理類 -->
    <bean id="userservice" class="cn.jbit.spring101002.service.UserService"></bean>
    
    <!-- 配置切面 -->
    <bean id="annotationaspect" class="cn.jbit.spring101002.aspect.AnnotationAspect"></bean>
    
    <!-- 配置自動代理  -->
    <aop:aspectj-autoproxy/>
七、測試
    1.在專案中建立test目錄
        /test
    2.在test目錄中建立測試包
        包名:cn.jbit.spring101002.aspect
    3.在測試包中建立測試類
        測試類名:AnnotationAspectTest.java
        測試內容:
        /**
         * 測試類
         * @author Administrator
         *
         */
        public class AnnotationAspectTest {
            /**
             * 6.測試異常通知
             */
            @Test
            public void testAfterThrowing(){
                //讀取並載入配置檔案
                ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
                //根據bean id 獲取bean物件
                UserService userService = (UserService) context.getBean("userservice");
                //呼叫儲存使用者方法
                userService.update();
            }

        }

本文轉自  素顏豬  51CTO部落格,原文連結:http://blog.51cto.com/suyanzhu/1562140


相關文章