zoukankan      html  css  js  c++  java
  • Spring中的前置增强和后置增强

    前置增强

    接口:

    /**
    * 接口
    * Created by Administrator on 2017/10/7.
    */
    public interface ISomeService {
    public void SomeService();
    }



    实现类:
    /**
    *
    * Created by Administrator on 2017/10/7.
    */
    public class SomeService implements ISomeService{
    //核心业务
    public void SomeService(){
    System.out.println("================before=================");

    }
    }


    前置通知
    import org.springframework.aop.MethodBeforeAdvice;
    import java.lang.reflect.Method;

    /**
    * Created by Administrator on 2017/10/7.
    */
    //前置通知
    public class MyBeforeAdvise implements MethodBeforeAdvice {
    public void before(Method method, Object[] objects, Object o) throws Throwable {
    System.out.println("======================前置增强=================");

    }
    }



    配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    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
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    ">
    <!--前置增强-->
    <!--目标对象-->
    <bean id="someService" class="cn.happy.qianzhibefore.SomeService"></bean>
    <!--增强 通知-->
    <bean id="beforeadvise" class="cn.happy.qianzhibefore.MyBeforeAdvise"></bean>
    <!--aop-->
    <bean id="proxyService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <!--配置需要增强的目标对象-->
    <property name="target" ref="someService"></property>
    <!--做怎么样的增强-->
    <property name="interceptorNames" value="beforeadvise"></property>
    <!--手动设置返回类型为class-->
    <property name="proxyTargetClass" value="true"></property>
    </bean>
    </beans>



    测试类
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    /**
    * 测试类
    * Created by Administrator on 2017/10/7.
    */
    public class Test20171007 {
    /**
    * 前置增强
    */
    @Test
    public void Test(){
    ApplicationContext context=new ClassPathXmlApplicationContext("applicationContextQianZhiBefore.xml");
    SomeService someService=(SomeService)context.getBean("proxyService");
    someService.SomeService();
    }
    }


    后置增强


    接口
    /**
    * 接口
    * Created by Administrator on 2017/10/7.
    */
    public interface ISomeService {
    public void SomeService();
    }



    实现类
    /**
    * 实现类
    * Created by Administrator on 2017/10/7.
    */
    public class SomeService implements ISomeService{
    //核心业务
    public void SomeService(){
    System.out.println("========after==========");

    }
    }

    效果图:



    后置通知
    import org.springframework.aop.AfterReturningAdvice;
    import java.lang.reflect.Method;

    /**
    * 后置增强
    * Created by Administrator on 2017/10/7.
    */
    public class MyAfterAdvise implements AfterReturningAdvice{
    public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
    System.out.println("================after============================");
    }
    }


    配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    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
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    ">
    <!--后置增强-->
    <!--目标对象-->
    <bean id="someService" class="cn.happy.houzhiafter.SomeService"></bean>
    <!--增强 通知-->
    <bean id="afteradvise" class="cn.happy.houzhiafter.MyAfterAdvise"></bean>
    <!--aop-->
    <bean id="proxyService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <!--配置需要增强的目标对象-->
    <property name="target" ref="someService"></property>
    <!--做怎么样的增强-->
    <property name="interceptorNames" value="afteradvise"></property>
    </bean>

    </beans>




    测试类
    /**
    * 后置增强
    */
    @Test
    public void Test(){
    ApplicationContext context=new ClassPathXmlApplicationContext("applicationContextQianZhiAfter.xml");
    ISomeService someService=(ISomeService)context.getBean("proxyService");
    someService.SomeService();
    }



    效果图:

    
    







  • 相关阅读:
    页面滚屏截图工具推荐
    java总结第二次(剩余内容)//类和对象1
    happy birthday to tbdd tomorrow
    数组增删改查及冒泡
    三个循环方面程序
    三个入门小程序
    java总结第二次//数组及面向对象
    Java总结第一次//有些图片未显示,文章包含基础java语言及各种语句
    后台验证url是不是有效的链接
    img 鼠标滑上后图片放大,滑下后图片复原
  • 原文地址:https://www.cnblogs.com/sujulin/p/7656077.html
Copyright © 2011-2022 走看看