自己使用jdk实现aop机制
来源:互联网 发布:数据分析主题规划 编辑:程序博客网 时间:2024/05/16 11:05
经常有人问我spring的aop讲一下好不,aop到底是啥,好难理解哦,aop的概念很多,但光听概念往往不太明白,aop的实现有很多,今天我介绍下用jdk中的Proxy如何实现aop机制
1. ITestService.java
package com.joey.aop.service;public interface ITestService { /** * 定义一个doSomething方法 * * @param str 输入字符串 * @return String 返回"return " + str */ public String doSomething(String str);}
package com.joey.aop.service.impl;import com.joey.aop.service.ITestService;public class TestService implements ITestService { @Override public String doSomething(String str) { // 执行dosomething 输出 do something 字符串 System.out.println("do someting"); return "return " + str; }}
3. AopHandler.java
package com.joey.aop.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class AopHandler implements InvocationHandler { private Object service; public AopHandler(Object service) { this.service = service; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 前置处理 System.out.println("before something"); // 执行方法 Object result = method.invoke(service, args); // 后置处理 System.out.println("after something"); // 返回数据 return result; }}
4. Main.java
package com.joey.aop.main;import com.joey.aop.proxy.AopHandler;import com.joey.aop.service.ITestService;import com.joey.aop.service.impl.TestService;import java.lang.reflect.Proxy;public class Main { public static void main(String[] args) { // 实例化对象 ITestService testService = new TestService(); // 生成代理对象 Object proxy = Proxy.newProxyInstance(Main.class.getClassLoader(), new Class[]{ITestService.class}, new AopHandler(testService)); if (proxy instanceof ITestService) { ITestService proxyService = (ITestService) proxy; // 执行代理对象的doSomething方法 System.out.println(proxyService.doSomething("joey")); } }}
5. 输出结果
before somethingdo sometingafter somethingreturn joey
发现doSomething方法前置输出了before something, 后置输出了after something, 实现aop机制成功
源代码下载
0 0
- 自己使用jdk实现aop机制
- 使用 jdk 实现 AOP
- 使用MethodInterceptor实现AOP 拦截机制(JDK编程式写法)
- 自己实现Spring AOP(二)JDK代理实现AOP
- 用Jdk实现AOP
- JDK核心API:使用动态代理实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能[动态代理]
- 使用JDK中的Proxy技术实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能
- 使用jdk和cglib实现spring的aop功能
- 使用JDK中的Proxy技术实现AOP功能
- 使用ThreadLocal与JDK动态代理 实现事务AOP管理
- 使用JDK中的Proxy技术实现AOP功能
- 使用JDK中的Proxy技术实现AOP功能
- AOP之JDK 动态代理使用及实现原理分析
- AOP的实现机制
- AOP实现原理机制
- AOP的实现机制
- JVM - 优化
- 揭秘:清末时期老北京的四大头牌名妓的悲喜人生
- Delphi XE之路(7)Mobile MessageDlg函数
- 为项目指定需要链接的库文件的两种方式
- 考试系统维护小结
- 自己使用jdk实现aop机制
- HDOJ 2097 Sky数
- JQuery UI - draggable参数中文详细说明
- Socket编程基本原理
- 第十七周项目四日期结构体(1)该日是该年的第几天
- 我为什么要写博客,我要写什么样子的博客
- HBase学习(二) HBase Shell 操作基本命令
- Javascript 下拉列表回显(根据值选中某一项)
- Delphi XE之路(8)xe5 android 手机上使用sqlite