Spring Aop and Aspectj

<context:annotation-config />

    <bean id="executionTimeLoggingSpringAop" class="big.ExecutionTimeLoggingSpringAOP" />

    <aop:config>
        <aop:pointcut id="executionTimeLoggingPointcut"
                      expression="execution(public * sayHello(..))" />

        <aop:advisor id="executionTimeLoggingAdvisor"
                     advice-ref="executionTimeLoggingSpringAop"
                     pointcut-ref="executionTimeLoggingPointcut" />
    </aop:config>

在上述代碼中ExecutionTimeLoggingSpringAOP爲實現了MethodBeforeAdvice, AfterReturningAdvice這兩個接口的類,這兩個接口分別是在目標方法執行前和後分別定義一個方法用於執行。aop:pointcut定義了切入點和表達式。aop:advisor用於將切入點和通知進行結合。spring

1.tips:在applicationcontext.getbean(returntype)獲取spring上下文的bean,參數是須要返回的bean的類型,參數能夠是超類或者接口,可是超類或者接口在spring上下文中的實現bean有且只有一個,若是沒有拋出NoSuchBeanDefinitionException異常,若是由多個則拋出bean不惟一異常。在進行註解一個bean時,value值默認爲空,bean的名稱由類名或方法名代替,首寫字母小寫。express

2.切入點指示符,匹配表達式:類型簽名表達式編程

<aop:pointcut id="executionTimeLoggingPointcut"
                      expression="within(bean.*)" />

經過使用within能夠指定接口,包名,類名類過濾方法。上述則指定了bean包名,將bean包中的全部方法都應用advice通知。app

3.使用方法簽名表達式關鍵字executionxml

4.blog

<aop:aspectj-autoproxy />

這句代碼在xml中進行配置,表示開啓切面編程。接口

5.@aspect在一個類上使用,表示這個類具備aop功能。ip

相關文章
相關標籤/搜索