Spring AOP 全部通知, 四种通知方式,Around, Before, After, Throws

Spring3.0 需要独立添加 aopalliance-1.0.jar , 否则报 层次结构错误(父类找不到实现)

<!-- 【前置通知】(方法前通知) `````````````【拦截器】 -->
<bean id="myMethodBeforeAdvice" class="aop.advice.MyMethodBeforeAdvice"/>

<!-- 目标对象 -->
<bean id="welcomeServiceTarget" class="aop.service.WelcomeServiceImpl">
    <property name="name" value="tom"/>
</bean>

<!-- 代理对象 -->
<bean id="welcomeServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
    <!-- 代理接口集  -->
    <property name="proxyInterfaces">
        <list>
            <value>aop.service.WelcomeService</value>      <!-- 【暴露】目标接口  -->
        </list>
    </property>
    
    <!-- 目标对象  -->
    <property name="target" ref="welcomeServiceTarget"/>   <!-- 【持有】目标对象  -->
    
    <!-- 拦截器名集 -->
    <property name="interceptorNames">
        <list>
            <value>myMethodBeforeAdvice</value>       <!-- 【增加】新功能 -->
        </list>
    </property>

  <!-- <property name="proxyTargetClass" value="true"/> true:类代理(继承),false:接口代理-->
</bean>

 

/**
 * 前置通知(方法前)
 */
public class MyMethodBeforeAdvice implements MethodBeforeAdvice{

    @Override
    public void before(Method method, Object[] args, Object target)
            throws Throwable {
        System.out.println("方法前调用......................");
    }
}

 

ApplicationContext ac = new ClassPathXmlApplicationContext("aop/service/aop.xml");
// 获取【代理对象】才有【增强功能】 WelcomeService ws
= (WelcomeService) ac.getBean("welcomeServiceProxy"); ws.sayName();

 

 

 

 

 

posted @ 2013-12-16 09:56  聆听自由  阅读(1471)  评论(0编辑  收藏  举报