Spring aop原理
来源:互联网 发布:剃头软件叫什么 编辑:程序博客网 时间:2024/05/17 08:32
1、aop概念
(1)aop:面向切面编程,扩展功能不修改源码实现
(2)aop采取横向抽取机制,取代传统的纵向继承体系重复性代码。
2、aop原理
4、底层实现演示
//接口类public interface UserService { void add(); void update(); void delete();}
//实现类public class UserServiceImpl implements UserService{ @Override public void add(User user) { // TODO Auto-generated method stub System.out.println("add....."); } @Override public void update(User user) { // TODO Auto-generated method stub System.out.println("update....."); } @Override public void delete(Integer id) { // TODO Auto-generated method stub System.out.println("delete....."); }}
//切面类public class MyAspect { public void before(){ System.out.println("before...."); } public void after(){ System.out.println("after...."); }}
/*** 工厂类,在spring中已经帮我们封装好* 主要作用是:利用代理对象,对对象中的方法进行增强**/public class MyBeanFactory { public static UserService createService() { // 目标类 final UserService userService = new UserServiceImpl(); final MyAspect myAspect = new MyAspect(); /** * 生成并返回一个代理类 * 参数1:类加载器 * 参数2:代理类需要的所有接口,目标类实例,getClass().getInterface() * 参数3:提供invoke方法,代理对象每次执行方法的时候都会调用一次invoke方法 **/ UserService proxyService = (UserService) Proxy.newProxyInstance( //获取类加载器,随便一个类都可以,一般选择当前类 MyBeanFactory.class.getClassLoader(), //获取目标对象的接口 userService.getClass().getInterfaces(), // new InvocationHandler() { /** * Object proxy:代理对象 * Method method:代理对象执行方法所调用的方法 * Object[] args:方法执行执行的实参 */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub myAspect.before(); System.out.println("args:"+args.toString()); //要用一个对象接住 Object object = method.invoke(userService, args); myAspect.after(); return object; } }); return proxyService; }}
阅读全文
0 0
- spring aop 原理(转)
- spring aop 原理
- spring AOP原理
- spring的aop原理
- spring aop原理(转)
- spring AOP实现原理
- Spring的AOP原理
- spring AOP原理
- spring AOP原理
- spring ioc 、 aop原理
- 浅析Spring AOP原理
- Spring AOP原理
- Spring aop(原理)
- Spring AOP 实现原理
- Spring AOP 实现原理
- Spring AOP 原理
- Spring Aop原理
- Spring Aop 实现原理
- 简单字符设备中设计的结构体
- JAVA集合类Collection浅析
- 详解PHP操作MySQL数据库
- Layui富文本编辑器图片上传接口(.NET C#)
- vim实现复制字符串到命令行
- Spring aop原理
- YTU.2520: 小慧唱卡拉OK
- idea自定义数据导出格式
- git commit简介
- Java并发编程之线程池任务监控
- 文章评论类,数据结构与读取方法
- 常见面试题整理—Linux系统常用操作
- 存储过程、定时事件的使用
- Android应用程序的Activity启动过程