首页 > 代码库 > aop
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(); } }
aop
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。