首页 > 编程语言 > 详细

Spring课程 Spring入门篇 5-5 advice应用(下)

时间:2019-04-17 22:07:06      阅读:140      评论:0      收藏:0      [点我收藏+]

1    解析

2    代码演练

 

1    解析

2    代码演练

2.1  环绕通知

实体类:

package com.imooc.aop.schema.advice.biz;

public class AspectBiz {
    
    public void biz(){
        System.out.println("MoocAspect biz");
//        throw new RuntimeException();
    }

}

 

配置文件:

<?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.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">


<bean id = "moocAspect" class = "com.imooc.aop.schema.advice.MoocAspect"></bean>
<bean id = "AspectBiz" class = "com.imooc.aop.schema.advice.biz.AspectBiz"></bean>

<aop:config>
    <aop:aspect  id="moocAspectAOP" ref="moocAspect">
<!--     声明切入点:从哪里开始执行 -->
<!--     执行com.imooc.aop.schema.advice.biz包下的所有Biz结尾的java类中的所有方法时 -->
        <aop:pointcut expression="execution(* com.imooc.aop.schema.advice.biz.*Biz.*(..))" id="moocPointCut"/>
        <aop:before method="before" pointcut-ref="moocPointCut"/>
        <aop:after-returning method="afterreturning" pointcut-ref="moocPointCut"/>
        <aop:after-throwing method="throwing" pointcut-ref="moocPointCut"/>
        <aop:after method="after" pointcut-ref="moocPointCut"/>

      <aop:around method="around" pointcut-ref="moocPointCut"/>

    </aop:aspect>
</aop:config>

</beans>

 

通知类:

package com.imooc.aop.schema.advice;

import org.aspectj.lang.ProceedingJoinPoint;

public class MoocAspect {
    
    public void before(){
        System.out.println("before");
    }
    
    public void afterreturning(){
        System.out.println("after returning");
    }

    public void throwing(){
        System.out.println("throw");
    }
    
    public void after(){
        System.out.println("Say Love me");
    }
    
    public Object around(ProceedingJoinPoint pjp){
        Object obj = null;
        try {
            System.out.println("MoocAspect Around Before");
            obj = pjp.proceed();
            System.out.println("MoocAspect Around After");
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return obj;
    }
}

 

测试类:

package com.imooc.test.aop;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;

import com.imooc.aop.schema.advice.biz.AspectBiz;
import com.imooc.test.base.UnitTestBase;

@RunWith(BlockJUnit4ClassRunner.class)
public class TestAOPSchemaAdvice extends UnitTestBase {
    
    public TestAOPSchemaAdvice(){
        super("classpath:spring-aop-schema-advice.xml");
    }
    
    @Test
    public void testBiz(){
        AspectBiz aBiz = super.getbean("AspectBiz");
        aBiz.biz();
    }

}

 

打印日志:

四月 17, 2019 9:17:34 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@409c8a10: startup date [Wed Apr 17 21:17:34 CST 2019]; root of context hierarchy
四月 17, 2019 9:17:35 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [spring-aop-schema-advice.xml]
before
MoocAspect Around Before
MoocAspect biz
MoocAspect Around After
Say Love me
after returning
四月 17, 2019 9:17:38 下午 org.springframework.context.support.ClassPathXmlApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@409c8a10: startup date [Wed Apr 17 21:17:34 CST 2019]; root of context hierarchy

 

Spring课程 Spring入门篇 5-5 advice应用(下)

原文:https://www.cnblogs.com/1446358788-qq/p/10726337.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!