Spring框架总结(七)
Spring代理模式:
名词解释:
代理是一种开发的设计模式,用途:提供了对目标对象另外的访问方式,及通过对代理访问目标对象.
优势:
可以在目标对象实现的基础上,增强额外的功能操作,(扩展目标对象的功能)
代理功能实现的是过滤拦阻的作用,其实就是筛选,跟要实现的类没有太大关系和不满条件的访问无效,只有符合要求的才可以实现访问.
代理本身不实现任何功能,只是类似第三方的一个环节.
代理模式Java中有三种
一、代理模式一:
1、静态代理
代理对象要实现与目标对象一样的接口。
优点:
不修改原来系统中的代码的基础上对功能进行扩展。
缺点:
(1)产生众多代理类,因为代理类都需要实现原来的目标对象接口
(2)被代理的类增加方法,代理类也需要增加,增加过多维护.
解决方案:
用一个类代替众多的代理类,方案一,代理工厂
2、动态代理
(1)代理对象,不需要实现接口
(2)代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象(需要我们制定创建代理对象实现的接口的类型)。
(3)动态代理,JDK代理,接口代理
创建方法:
public class ProxyFactory {
private Object target; public ProxyFactory(Object target) {
this.target = target;
} public Object getProxyInstance() {
return Proxy.newProxyInstance(//
target.getClass().getClassLoader(),//
target.getClass().getInterfaces(),//
new InvocationHandler() { @Override
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
System.out.println("******开启动态代理事物*********");
Object returnValue = method.invoke(target, args);
System.out.println("******关闭动态代理事物*********"); return returnValue;
}
});
}
}
动态代理总结:
代理对象不需要实现接口,但是目标对象一定要实现接口;否则不能用动态代理!
(class 被代理的类 implements 抽象类)
问题:
有一个目标对象,想要功能扩展,但目标对象没有实现接口,怎样功能扩展?但是有继承.
Spring框架总结(七)的更多相关文章
- Spring框架系列(七)--Spring常用注解
Spring部分: 1.声明bean的注解: @Component:组件,没有明确的角色 @Service:在业务逻辑层使用(service层) @Repository:在数据访问层使用(dao层) ...
- Spring框架配置beans.xml
Spring学习笔记(一) 一.Spring 框架 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 ...
- 跟着刚哥学习Spring框架--事务配置(七)
事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...
- spring框架详解: IOC装配Bean
1 Spring框架Bean实例化的方式: 提供了三种方式实例化Bean. 构造方法实例化:(默认无参数) 静态工厂实例化: 实例工厂实例化: 无参数构造方法的实例化: <!-- 默认情况下使用 ...
- 跟着刚哥学习Spring框架--创建HelloWorld项目(一)
1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ...
- spring boot / cloud (七) 使用@Retryable来进行重处理
spring boot / cloud (七) 使用@Retryable来进行重处理 前言 什么时候需要重处理? 在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁 ...
- UEditor1.4.3.3整合Spring MVC和七牛
[前言] 项目中涉及将UEditor上传服务器整合进已有的基于Spring MVC的服务中,并且将上传到本地改为上传到七牛,看似简单的一个需求,实际做起来还是遇到了一些困难.在这里分享一下经验-- 七 ...
- 【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说
大家好,好久不见,今天我们来一起学习一下关于Spring框架的IOC技术. 控制反转--Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的 ...
- Spring框架入门之Spring简介
一.Spring简介(由Rod Johnson创建的一个开源框架) Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿 ...
- [ SSH框架 ] Spring框架学习之二(Bean的管理和AOP思想)
一.Spring的Bean管理(注解方式) 1.1 什么是注解 要使用注解方式实现Spring的Bean管理,首先要明白什么是注解.通俗地讲,注解就是代码里的特殊标记,使用注解可以完成相应功能. 注解 ...
随机推荐
- C++Windows核心编程读书笔记
转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...
- gil基本介绍
一 引子 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native t ...
- Linux 之 inotify+rsync 备份文件系统
一.需求 1.线上有不同的机房,并且每个机房所对公网开放端口不一样. 2.A机房中的a机器是台文件服务器,需要备份到B机房中的b机器,以及C机房中的c机器. 3.并且保持实时同步.只要a上面的文件有改 ...
- bbbbb
- App切图命名规范
转自:http://www.uisdc.com/slice-rename-in-ui-design(略有修改) 关于切图命名的规范,我个人觉得关键是在于团队能够有一个统一的规则,所有成员严格遵守并且和 ...
- 用CSS制作小三角提示符号
今天在项目中遇到了如下图的切图要求. 对,重点就是那个小三角提示符号. html 结构如下 <div class="wrap"> <div class=" ...
- OpenLayers 3 之 地图控件(control)
OpenLayers 3 之 地图控件(control) 地图控件(control)是指地图上比例尺,缩略图,拉近拉远的按钮,滚动控制条等控件,默认控件有三个,可以禁用. OpenLayers 3 之 ...
- android 积累
图片资源 图片资源是简单的Drawable资源,目前Android支持的图片格式有:gif.png.jpg等.我们只需要把图片资源放置到\res\drawable目中,那么在编译后的R.java类中就 ...
- 取消Eclipse的js校验功能
1 window>>preferences>>javascript>>validator>>Error/warnings 去掉 Enable Javas ...
- 自定义javascript日历控件
Web页中的日历一般离不开表格,通常都使用表格装载指定月的日期等信息.所以,要编写JS日历,首先必须解决的问题是表格的行与列问题.列是固定的,七列,因为一周有七天.行需要动态计算,因为,每一个月的第一 ...