zoukankan      html  css  js  c++  java
  • aop

     做aop做一些事情:::

    package cn.happy.spring04aop;
    
    public interface ISomeService {
      public void doSomeThing();
    }
        package cn.happy.spring04aop;
    
    public class SomeServiceImpl implements ISomeService {
       //核心业务
        @Override
        public void doSomeThing() {
            System.out.println("do ok? ok!yes");
        }
    
    }

    添加前置和后置

    首先加入aop的jar包:aopalliance.jar

     package cn.happy.spring04aop.aop;
    
    import java.lang.reflect.Method;
    
    import org.springframework.aop.AfterReturningAdvice;
    
    public class AfterAdvice implements AfterReturningAdvice {
    
        @Override
        public void afterReturning(Object returnValue, Method method,
                Object[] args, Object target) throws Throwable {
            System.out.println("=====after==========");
        }
    }
    package cn.happy.spring04aop.aop;
    
    import java.lang.reflect.Method;
    
    import org.springframework.aop.MethodBeforeAdvice;
    /**
     * @author Happy
     */
    public class BeforeAdvice implements MethodBeforeAdvice {
        @Override
        public void before(Method method, Object[] args, Object target)
                throws Throwable {
            System.out.println("==============before=======");
        }
    
        
    
    }

    有了前置和后置之后,需要配置applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:aop="http://www.springframework.org/schema/aop"
        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
            ">
            <!--如果一个类实现了一个接口 ,那么默认使用的代理是jdk代理  -->
             <!--如果一个类没有实现了一个接口 ,那么默认使用的代理是cglib代理  -->
        <!-- 被代理对象 SomeServiceImpl -->
        <bean id="service" class="cn.happy.spring04aop.SomeServiceImpl"></bean>
        <!--beforeadvice 前置通知  -->
        <bean id="beforeAdvice" class="cn.happy.spring04aop.aop.BeforeAdvice"></bean>
        <!-- AfterAdvice 后置通知 -->
        <bean id="afterAdvice" class="cn.happy.spring04aop.aop.AfterAdvice"></bean>
        <!-- aop -->
        <aop:config>
        <aop:pointcut expression="execution(public void *(..))" id="mypt"/>
        <!--顾问 用来包含通知 -->
        <aop:advisor advice-ref="beforeAdvice" pointcut-ref="mypt"/>
        <aop:advisor advice-ref ="afterAdvice" pointcut-ref ="mypt"/>
        </aop:config>
        
    </beans>

    编写测试类:

    package cn.happy.spring04aop;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import cn.happy.spring02printer.printer.Printer;
    
    public class MyTest {
        @Test
        public void aopTest(){
            ApplicationContext ctx=new ClassPathXmlApplicationContext("cn/happy/spring04aop/applicationContext.xml");
            ISomeService service=(ISomeService)ctx.getBean("service");
            service.doSomeThing();
        }
    }
  • 相关阅读:
    CF Round #569 Div2(contest1180)
    HY中考游记
    Luogu P2309 loidc,卖卖萌
    点击按钮使用window.open打开页面后,再次点击按钮会再打开一个页面,如何解决?
    line-height:150%/1.5em与line-height:1.5的区别
    table使用display:block时会多出一条边框
    让360双核浏览器默认极速模式,避免采用兼容模式
    使用nodejs安装http-server
    行内元素内边距对左右下起作用,外边距只对左右起作用
    微信小程序示例
  • 原文地址:https://www.cnblogs.com/myhome-1/p/5990307.html
Copyright © 2011-2022 走看看