• spring的学习____9.spring aop的实现方式 2 :通过自定义类实现Aop


    (本案例还是结合上一篇文章,给UserServiceImpl的方法中横向织入日志信息)

    1.自定义的增强类的编写:

    public class Diy {
    
        public void before(){
            System.out.println("方法执行前~~~~~~~~~~~~~~~");
        }
    
        public void after(){
            System.out.println("方法执行后~~~~~~~~~~~~~");
        }
    
    }

    2.spring 配置文件的编写:

    <?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.xsd">
    
       <!--1.user bean的注册-->
        <bean id="user" class="com.xbf.service.UserServiceImpl"/>
    
        <!--2. 自定义类 bean 的注册-->
        <bean id="diy" class="com.xbf.diy.Diy"/>
    
        <!--3.aop-->
        <aop:config>
            <!--切入面  自定义类-->
            <aop:aspect ref="diy">
    
                <!--切入点-->
                <aop:pointcut id="pointcut" expression="execution(* com.xbf.service.UserServiceImpl.*(..))"/>
    
                <!--切入面类中的方法-->
                <aop:before method="before" pointcut-ref="pointcut"/>
                <aop:after method="after" pointcut-ref="pointcut"/>
    
            </aop:aspect>
    
        </aop:config>
    
    
    
    </beans>

    3.测试类的编写:(接口接收,和动态代理一样)

    public class DiyTest {
    
        @Test
        public void test(){
    
            ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
    
            UserService user = (UserService)context.getBean("user");
    
            user.add();
        }
    }

    总结:自定义的增强类相当于是切入面,增强类中方法就是要横向织入实现类中(即切入点)的方法。

  • 相关阅读:
    sqlserver创建链接服务器连接sqlserver脚本
    两步快速获取小程序源码
    SQL判断是否存在该数据 有则更新,没有则插入
    利用c#+jquery+echarts生成统计报表(附源代码)
    每晚定时重启IIS和数据库服务可节省服务器资源
    SQL中的循环、for循环、游标
    sql的行转列(PIVOT)与列转行(UNPIVOT)
    SQLServer 简单数据拆分
    IIS安装与MVC程序部署
    (六)HTTP和HTTPS(转)
  • 原文地址:https://www.cnblogs.com/xbfchder/p/11272899.html
Copyright © 2020-2023  润新知