浅析Spring AOP源码(十七) Spring AOP开发大作战
  fztgkkRjHIsV 2023年11月09日 24 0


前面AOP几节我们已经浅析了spring 是如何实现AOP的,和AOP的底层原理,那么今天我们先来看看我们开发环境中是怎么运用AOP的

好了,我们先定义一个简单的应用场景,在web开发中,mvc模式中,我们的有些核心service的某些方法是需要打logger的,现在我们例如AOP,将打logger的事情给AOP去做

先定义个service接口


1. package org.study.spring.aop.base.xml;  
2.   
3. public interface BussinessService {  
4.       
5. void doSomething();  
6.   
7. }


具体实现:



    1. package org.study.spring.aop.base.xml;  
    2.   
    3. public class BussinessServiceImpl implements BussinessService{  
    4.   
    5. public void doSomething() {  
    6. "BussinessServiceImpl do something");  
    7.     }  
    8.   
    9. }



    通知(advice):


    1. package org.study.spring.aop.base.xml;  
    2.   
    3. import org.aspectj.lang.JoinPoint;  
    4.   
    5. public class LoggerAspect {  
    6.       
    7. public void doBefore(JoinPoint jp) {    
    8.           
    9. "log Begining method: " + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName());    
    10.     }   
    11.   
    12. }

    spring的配置文件


      1. <?xml version="1.0" encoding="UTF-8"?>  
      2. <beans xmlns="http://www.springframework.org/schema/beans"  
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      4. xmlns:context="http://www.springframework.org/schema/context"  
      5. xmlns:aop="http://www.springframework.org/schema/aop"  
      6. xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd  
      7.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
      8. >  
      9.    
      10. <aop:config>    
      11. <!-- 用什么切 -->  
      12. <aop:aspect id="TestAspect" ref="aspectBean">    
      13. <!-- 在那个地方切 -->  
      14. <aop:pointcut id="busssinessPointcut" expression="execution(* org.study.spring.aop.base.xml.*.*(..))" />    
      15. <!-- 什么时候切 -->  
      16. <aop:before pointcut-ref="busssinessPointcut" method="doBefore"/>    
      17. </aop:aspect>    
      18. </aop:config>    
      19.           
      20. <bean id="aspectBean" class="org.study.spring.aop.base.xml.LoggerAspect" />    
      21. <bean id="bussinessServiceImpl" class="org.study.spring.aop.base.xml.BussinessServiceImpl"></bean>    
      22.       
      23.   
      24. </beans>



      测试代码


      1. package org.study.spring.aop.base.xml;  
      2.   
      3. import javax.annotation.Resource;  
      4.   
      5. import org.junit.Test;  
      6. import org.junit.runner.RunWith;  
      7. import org.springframework.test.context.ContextConfiguration;  
      8. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
      9.   
      10. @RunWith(SpringJUnit4ClassRunner.class)  
      11. @ContextConfiguration(locations ="classpath*:spring-aop.xml")  
      12. public class TestXmlAop {  
      13.       
      14. @Resource  
      15. private BussinessService bussinessService;  
      16.       
      17. @Test  
      18. public void testAop() throws Exception{  
      19.         bussinessService.doSomething();  
      20.            
      21.     }  
      22.   
      23. }


      测试结果:


      浅析Spring AOP源码(十七) Spring AOP开发大作战_xml

      【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

      1. 分享:
      最后一次编辑于 2023年11月09日 0

      暂无评论

      推荐阅读
      fztgkkRjHIsV