SpringAOP入門例子-通過註解

上篇文章我們介紹了SpringAOp通過註解方式進行配置的例子(我不喜歡說那種概念性的東西,我感覺通過代碼來讀最好)

1:創鍵Drama類(當做切點)

package com.ccut.model1;

public class Drama  {
    public void perform() {
        for (int i = 0; i < 5; i++) {
            System.out.println("話劇正在進行中——");
        }
    }
}

2:創建觀衆類,當做切面

package com.ccut.model1;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 *觀衆(表示這是個切面)
 */
//@Aspect表示切面
@Aspect
public class Audience {
    //我們必須在xml裏面聲明<aop:aspectj-autoproxy />,我們才能用這些註解
    @Pointcut("execution(* com.ccut.model1.Drama.perform(..))")
    public void performance() {} // 定義切點

    @Before("performance()")
    public void takeSeats() {
        // 節目開始之前
        System.out.println("演出前——觀衆開始入座");
    }

    @Before("performance()")
    public void turnOffCellPhones() {
        // 節目開始之前
        System.out.println("演出前——觀衆關機或靜音");
    }

    @AfterReturning("performance()")
    public void applaud() {
        // 節目成功結束之後
        System.out.println("演出很成功——觀衆鼓掌:啪啪啪");
    }

    @AfterThrowing("performance()")
    public void demandRefund() {
        // 節目表演失敗之後
        System.out.println("節目演出很失敗——切!一點都不好看,我們要求退錢!");
    }
}

3:配置文件如何配置.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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
   <!--添加<aop:aspectj-autoproxy />實現註解切面。  -->
    <aop:aspectj-autoproxy />
    
    <bean id="drama" class="com.ccut.model1.Drama" />
    <bean id="audience" class="com.ccut.model1.Audience" />
</beans>

4:主方法

package com.ccut.model1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AudienceTest {
    public static void main(String[] args) {
    	ApplicationContext ctx=new ClassPathXmlApplicationContext("aop1.xml");
        Drama drama = (Drama)ctx.getBean("drama");
        drama.perform();
    }
}

5:截圖


源代碼下載





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章