spring Aop 理解
来源:互联网 发布:无法连接至steam网络 编辑:程序博客网 时间:2024/05/21 10:26
最近一直在边改bug边研究Spring 作为一个新手程序猿 Spring在我面前简直就是博大精深 其中的IOC和AOP就是Spring的精髓 ,其中的AOP便是面向对象设计思想的补充
AOP Aspect Oriented Programming 面向切面编程 在我看来 aop便是那个为了软件开发过程中高内聚低耦合
AOP在实际的工作环境中一般用在事务控制 其主要实现原理是利用代理技术实现的
1 动态代理
jdk1.5中提供,利用反射。实现InvocationHandler接口
/**
* 动态代理类
*
* @author liangweiming
*
*/
public class DynamicProxy implements InvocationHandler {
/** 需要代理的目标类 */
private Object target;
/**
* 写法固定,aop专用:绑定委托对象并返回一个代理类
*
* @param delegate
* @return
*/
public Object bind(Object target) {
this.target = target;
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
/**
* @param Object
* target:指被代理的对象。
* @param Method
* method:要调用的方法
* @param Object
* [] args:方法调用时所需要的参数
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;
// 切面之前执行
System.out.println("切面之前执行");
// 执行业务
result = method.invoke(target, args);
// 切面之后执行
System.out.println("切面之后执行");
return result;
}
}
/**
* 测试类
*
* @author liangweiming
*
*/
public class Test {
public static void main(String[] args) {
// 绑定代理,这种方式会在所有的方法都加上切面方法
ITalk iTalk = (ITalk) new DynamicProxy().bind(new PeopleTalk());
iTalk.talk("业务说明");
}
}
输出结果
切面之前执行
people talk业务说法
切面之后执行
从上面的代码可以看出 可以在需要的业务代码之前动态的加入切面方法 不过此种方法需要代理类实现接口 有其局限性
- spring aop的理解
- Spring AOP 理解老
- Spring AOP概念理解
- spring aop 理解
- Spring AOP 理解
- 初步理解spring aop
- Spring中的AOP理解
- Spring AOP的理解
- spring AOP理解
- Spring-理解AOP
- Spring中的AOP理解
- 深入理解Spring AOP
- spring AOP个人理解
- 理解Spring AOP
- spring 的AOP 理解
- spring AOP简单理解
- spring Aop 理解
- Spring AOP的理解
- PTA 一 长城
- Hash的应用
- UDP中的connect方法 和TCP的connect方法详解
- 将 2进制整数转化为十进制输出到文件中
- 死亡阴影的客服脑子进水了?
- spring Aop 理解
- thinking in java——0319学习笔记
- leetcode 242. Valid Anagram python
- 监督学习:生成模型和判别模型
- 图优化--g2o入门
- 使用sklearn做单机特征工程
- linux下mysql安装相关
- 选择性搜索(二) 进入正题
- android移动应用开发学习笔记(四)——打开相机动作