Spring的AOP应用实例

Spring的AOP应用实例

 

view plaincopy to clipboardprint?
 
public class WelcomeAdvice implements MethodBeforeAdvice{  
    public void before(Method method, Object[] objects, Object o) throws Throwable {  
        System.out.println("Welcome,这是MethodBeforeAdvice的before方法!");  
    


public class WelcomeAdvice implements MethodBeforeAdvice{
    public void before(Method method, Object[] objects, Object o) throws Throwable {
        System.out.println("Welcome,这是MethodBeforeAdvice的before方法!");
    }
} view plaincopy to clipboardprint?
   
public class ThankYouAdvice implements AfterReturningAdvice{  
    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {  
        System.out.println("Thank you, come again!  这是 AfterReturningAdvice的afterReturning方法!");  
    


public class ThankYouAdvice implements AfterReturningAdvice{
    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
        System.out.println("Thank you, come again!  这是 AfterReturningAdvice的afterReturning方法!");
    }
}view plaincopy to clipboardprint?
public interface IAopTest {  
    void test();  
 
 
 
public class AopTest implements IAopTest{  
    public void test() {  
        System.out.println("Aop Testing.......");  
    

public interface IAopTest {
    void test();
}


public class AopTest implements IAopTest{
    public void test() {
        System.out.println("Aop Testing.......");
    }
} view plaincopy to clipboardprint?
public class TestResultImpl {  
    private IAopTest aopTest;  
 
    public void setAopTest(IAopTest aopTest) {  
        this.aopTest = aopTest;  
    
 
    public void test() {  
        aopTest.test();  
    

public class TestResultImpl {
    private IAopTest aopTest;

    public void setAopTest(IAopTest aopTest) {
        this.aopTest = aopTest;
    }

    public void test() {
        aopTest.test();
    }
} view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <!--创建目标代理对象--> 
    <bean id="aopTest" class="aop.AopTest"/> 
    <!--创建前置通知--> 
    <bean id="welcomeAdvice" class="aop.WelcomeAdvice"/> 
    <!--创建后置通知--> 
    <bean id="thankYouAdvice" class="aop.ThankYouAdvice"/> 
    <!--创建代理bean开始--> 
    <bean id="proxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean"> 
        <property name="proxyInterfaces" value="aop.IAopTest"/> 
        <property name="interceptorNames"> 
            <list> 
                <value>welcomeAdvice</value> 
                <value>thankYouAdvice</value> 
            </list> 
        </property> 
 
        <property name="target" ref="aopTest"/> 
    </bean> 
 
    <bean id="testResult" class="aop.TestResultImpl"> 
        <property name="aopTest" ref="proxyFactoryBean"/> 
    </bean> 
</beans> 
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--创建目标代理对象-->
    <bean id="aopTest" class="aop.AopTest"/>
    <!--创建前置通知-->
    <bean id="welcomeAdvice" class="aop.WelcomeAdvice"/>
    <!--创建后置通知-->
    <bean id="thankYouAdvice" class="aop.ThankYouAdvice"/>
    <!--创建代理bean开始-->
    <bean id="proxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces" value="aop.IAopTest"/>
        <property name="interceptorNames">
            <list>
                <value>welcomeAdvice</value>
                <value>thankYouAdvice</value>
            </list>
        </property>

        <property name="target" ref="aopTest"/>
    </bean>

    <bean id="testResult" class="aop.TestResultImpl">
        <property name="aopTest" ref="proxyFactoryBean"/>
    </bean>
</beans> view plaincopy to clipboardprint?
 
public class MyTest {  
    @Test 
    public void test() {  
        ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"aop/test.xml"});  
        TestResultImpl aopTest = (TestResultImpl)ctx.getBean("testResult");  
 
        aopTest.test();  
    


public class MyTest {
    @Test
    public void test() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"aop/test.xml"});
        TestResultImpl aopTest = (TestResultImpl)ctx.getBean("testResult");

        aopTest.test();
    }
}

这是测试结果:

Welcome,这是MethodBeforeAdvice的before方法!
Aop Testing.......
Thank you, come again!  这是AfterReturningAdvice的afterReturning方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值