Spring面向切面编程——Spring实现AOP方式——通过Spring API实现
2017-10-07 14:16
1031 查看
Log.java:
package log; import org.springframework.aop.MethodBeforeAdvice; import java.lang.reflect.Method; /** * Description: 使用spring实现aop---使用spring API来实现 前置通知 */ public class Log implements MethodBeforeAdvice { //注意实现的这个接口,如果这个方法报错,那么导入aopalliance.jar和aspectweaver.jar两个jar包 /** * * @param method 被调用方法的对象,切入点的方法对象 * @param args 被调用的方法的参数 * @param target 被调用法方法的目标对象 * @throws Throwable */ public void before(Method method, Object[] args, Object target) throws Throwable { System.out.println(target.getClass().getName()+"的"+method.getName()+"方法被执行了"); } }
AfterLog.class:
package log; import org.springframework.aop.AfterReturningAdvice; import java.lang.reflect.Method; /** * Description:后置通知 */ public class AfterLog implements AfterReturningAdvice { //注意实现的这个接口,如果这个方法报错,那么导入aopalliance.jar和aspectweaver.jar两个jar包 /** * 目标方法执行后执行的通知 * * @param returnValue 返回值 * @param method 被调用的方法 * @param args 被调用方法对象的参数 * @param target 被调用方法对象的目标对象 * @throws Throwable */ public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable { System.out.print(target.getClass().getName() + "的" + method.getName() + "被成功执行,返回值是:" + returnValue); } }
UserService.class:
package service; public interface UserService { public void add(); public void delete(); public void search(); public void update(); }
UserServiceImp.class:
package service; public class UserServiceImp implements UserService { public void add() { System.out.println("增加用户"); } public void delete() { System.out.println("删除用户"); } public void search() { System.out.println("查找用户"); } public void update() { System.out.println("修改用户"); } }
applicationContext.xml:
<?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"> <bean id="userService" class="service.UserSe 9515 rviceImp"/> <bean id="log" class="log.Log"/> <bean id="afterLog" class="log.AfterLog"/> <aop:config> <!--切入点 *:表示所有返回值--> <!--()代表无参 (..)代表所有参数--> <aop:pointcut id="pointcut" expression="execution(* service.UserServiceImp.*(..))"/> <aop:advisor advice-ref="log" pointcut-ref="pointcut"/> <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/> </aop:config> </beans>
Test.java:
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import service.UserService; /** * Description: */ public class Test { public static void main(String args[]){ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService) ac.getBean("userService"); userService.add(); } }
测试结果:
service.UserServiceImp的add方法被执行了 增加用户 service.UserServiceImp的add被成功执行,返回值是:null Process finished with exit code 0
可以加我微信一起学习:
相关文章推荐
- Spring面向切面编程——Spring实现AOP方式——通过注解实现
- Spring面向切面编程——Spring实现AOP方式——自定义类实现
- spring AOP面向切面编程的四种实现方式
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Spring 通过注解方式实现AOP切面编程
- Spring AOP的基本原理及面向切面编程的实现
- spring_由注解实现AOP面向切面编程_实现动态代理
- spring_由XML实现AOP面向切面编程_实现动态代理
- Spring(十一)使用Spring的注解方式实现面向切面技术AOP
- 黑马程序员--Spring Aop 面向切面编程,实现前置通知
- spring学习笔记8--使用spring进行面向切面的(AOP)编程(2)XML配置方式
- Spring——使用Spring的注解方式实现面向切面技术AOP
- CGLIB实现AOP代理的测试类,与Spring分离,加深对面向切面编程的理解
- Spring AOP 面向切面编程 常见通知实现(前置,后置,环绕,异常)
- idea 实现Spring讲解(Ioc-控制反转)/Aop(面向切面的编程)
- Spring之面向切面编程AOP(二)
- Spring、Mybatis和Logback集成,用面向切面AOP方式捕获并打印异常Exception信息
- Spring通过@AspectJ方式实现AOP
- Spring 面向切面编程AOP
- 注解方式实现AOP切面编程