spring 动态代理
突然想到AOP,就简单回忆一下动态代理。
1.什么是动态代理?
假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行。
一旦我想在用户操作之前加一个权限验证方法,那每个调用方法之前得再加一个权限验证方法,这样的工作量则是巨大的。
解决方案:将对象增删改查方法交给代理去执行,代理在执行方法前后可以做日志和权限控制。 代理:本来应该由自己做的事情,由别人去做
动态代理:在程序运行过程中生成代理对象,由该代理对象去完成自己要去做的事情。
应用:
1.事务管理,执行某个方法前开启事务,执行后关闭。
2.日志
3.权限
4.方法执行效率
spring 的动态代理就是AOP的实现原理,因此理解动态代理非常重要。如下记录一种简单的动态代理demo 详情请参考:https://www.cnblogs.com/techyc/p/3455950.html public class LogHandler implements InvocationHandler { private Object target; public Object createProxy(Object targetObject){
this.target = targetObject;
return Proxy.newProxyInstance(
targetObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(), this);
} @Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(target, args);
}
}
spring 动态代理的更多相关文章
- Java的三种代理模式(Spring动态代理对象)
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- Spring 动态代理 之 but was actually of type 'com.sun.proxy.$Proxy14 Exception
今天在写Spring的引介代理的时候,报了一个错: Exception in thread "main" org.springframework.beans.factory.Bea ...
- Spring动态代理及Spring Bean的生命周期
数组添加值 public class DiTest { /** * 数组 */ private String [] arrays; /** * List:集合 */ private List<I ...
- Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?
前言 在研究 『 Spring 是如何解决循环依赖的 』 的时候,了解到 Spring 是借助三级缓存来解决循环依赖的. 同样在上一节留下了疑问: 循环依赖为什么要使用三级缓存?而不是使用二级缓存? ...
- Spring动态代理的生成-如何判断是使用JDK动态代理还是CGlib代理
前言 在上一篇文章中讲到了Spring是如何获取对应的Bean的增强,然后本次主要讲解一下Spring如何在获取到增强后创建Spring代理的. 在步入正题之前先给大家看一下Spring创建代理的大致 ...
- spring动态代理
接下来我们来体会下动态代理带给我们的便利 package aop006; public interface Girl { public void KFC(String datetime); publi ...
- Spring AOP动态代理原理与实现方式
AOP:面向切面.面向方面.面向接口是一种横切技术横切技术运用:1.事务管理: (1)数据库事务:(2)编程事务(3)声明事物:Spring AOP-->声明事物 2.日志处理:3.安全验证 ...
- 【spring基础】AOP概念与动态代理详解
一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一 ...
- spring基础概念AOP与动态代理理解
一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一 ...
随机推荐
- 笨办法40模块, 类和对象class
class a: def change(self, sign, call): self.first = sign self.second = call first = 'first' second = ...
- 常见IO模型
在socket的通信中,recv,accept,recvfrom(UDP协议接收信息)这些阶段由于需要收到信息,才能继续下面的代码,所以这些阶段叫做阻塞,类似于我们python变成中的input函数, ...
- python1-集合、函数-(全局变量与局部变量)
集合 # s=set('hello')# print(s)## s=set(['alex','alex','sb'])# print(s) # s={1,2,3,4,5,6} #添加# s.add(' ...
- STL中set的使用方法
第一次想认真地学学set,是在我做一题treap的时候产生的念头.(HNOI2004 宠物收养场,洛谷P2286) 嗯,虽然学过一丢丢的treap和splay,但是这编程复杂度貌似有点高…… 无奈翻开 ...
- 常见图片格式PNG,JPEG,BMP,GIF区别总结
在前端工作久了经常会遇到各种格式的图片文件,现文做一些区别总结,帮助理解但不深入. [PNG](Portable Network Graphics) PNG是一种无损压缩的位图图形格式,主要有PNG8 ...
- vs-code 基础设置
汉化设置: 最新版的vscode 汉化需要两步 1 ctrl+shift+p 在顶部输入框中输入 language 后选择 configure Display Language 后进入 第二张 ...
- ACE + TAO工程中的Messenger启动过程
1.启动NameService服务 F:\ACESource\ACE_wrappers\TAO\orbsvcs\Naming_Service>tao_cosnaming.exe -o F:\AC ...
- java常用类( 下 )
- js date setInterval 时间 时钟 getFullYear ,JavaScript
js 创建时钟: 1.参考链接: 注意 getYear (两位 或者 四位) 改成 getFullYear js操作时间 2.实例: html: <span class="glyp ...
- [转载] java多线程总结(二)
转载自:http://www.cnblogs.com/lwbqqyumidi/p/3817517.html 作者:Windstep 四.Java多线程的阻塞状态与线程控制 上文已经提到Java阻塞的几 ...