阶段3 2.Spring_07.银行转账案例_9 基于子类的动态代理

代理一个普通的java类

导入cglib的包

它还有一个asm的依赖。会自动加进来

创建cglib的文件夹。把proxy里面的Client和Producer复制到cglib文件夹

Producer不实现任何的接口

Client内的代码要重新写

不能受罪种类,如果是最终类就不能再创建子类了

参数1是Class 参数2是Callback


MethodInterceptor是Callback的子接口

前面三个参数和基于接口的动态代码参数是一样的


producer需要用final来修饰


调用一下这个方法,传入1万2f


对已经写好的方法进行增强。并且在增强的过程中提供一些我们需要实现的功能

用处

连接池的close方法在关闭的时候不能真正的关闭,而是要还回池中。那就可以使用动态代理的方式对connection的close方法进行增强。把它加回到池里面去

解决全站中文乱码request方法的增强,用装饰者模式可以实现,用动态代理同样可以实现。就是对getParameter的三个方法进行增强。

原文地址:https://www.cnblogs.com/wangjunwei/p/11354283.html

时间: 2024-10-13 03:38:29

阶段3 2.Spring_07.银行转账案例_9 基于子类的动态代理的相关文章

基于接口和基于子类的动态代理

一:基于接口(JDK1.3之后提供): import com.aiitec.service.IAccountService;import com.aiitec.utils.TransactionManager; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springfra

基于子类的动态代理

package com.itheima.cglib; import com.itheima.proxy.IProducer;import com.itheima.proxy.Producer;import com.sun.webkit.dom.ProcessingInstructionImpl;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.pro

基于接口的动态代理

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾. 在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface).另一个则是 Proxy(Class

基于JDK的动态代理技术详解

虽然对于Spring的基本思想Aop是基于动态代理和CGlib这一点很早就有所认识,但是什么是动态代理却不甚清楚.为了对Spring加深理解,我觉得好好学习一下java的动态代理是非常有必要的. 静态代理 在学习动态代理之前我先花一点时间了解一下静态代理,从静态代理出发了解代理到底是怎么一回事,以及了解静态代理的局限性,进而明白为什么要发展及使用动态代理技术. 相信使用过Spring框架的同学都知道Spring利用Aop完成声明式事务管理以及其他的代理增强,也就是在方法执行前后加上一些譬如时间.

基于jdk和cglib的动态代理

动态代理是Spring Aop的基础,分为基于JDK的动态代理和基于CGLIB的动态代理. 声明一个被代理的类: package com.maheng.proxy.jdk; public interface IUser { public void save(String name); } package com.maheng.proxy.jdk; public class User implements IUser{ @Override public void save(String name)

微信营销案例七 基于LBS营销

案例七:凯迪拉克 基于Lbs营销 播报路况已经不新鲜,交通广播已经霸占这个领域许多年,凯迪拉克在其微信中推出“66号公路”的活动,对路况信息实时播报,更新及时为当地出行的人提供服务,尽管是在交通广播的眼皮下抢生意,但好在凯迪拉克的路况播报仅限66号公路,这也是其优点,只针对一条路况信息的播报,避免范围大而出现信息不及时的情况. 微信营销案例七 基于LBS营销,布布扣,bubuko.com

Quartz应用实践入门案例二(基于java工程)

在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任何程序中.只要你的程序中需要这项功能!但是对于一些刚开始学习某种框架的菜鸟而言,这似乎就不是那么简单了.如果在学习开源框架API的同时,能有一两个案例小程序配着其API去看,那应该就是事半功倍了. 本文是在自己学习源码和网上查找资料的基础上完成的,将详细叙述在java工程中如何巧妙的融入Quartz框架,小案

基于AbstractRoutingDataSource的动态切换数据库

当项目发展到一定阶段,就需要对数据库进行一定的优化.一般会对数据库进行横向和纵向切库分表,但是这样的问题就来了,在我们操作数据库时,需要根据切分规则提前获得我们需要的数据库的连接,这明显会加重程序员的负担. 比如我们将"用户信息数据库"按照用户注册的年月来分库,在用户注册的时候,为用户分配一个以yyyyMM开头的唯一标示,以方便我们能快速定位到切分后的子数据库.那么问题来了,我们在项目中,如何动态且方便的获得我们需要的数据源呢?Spring提供了一个解决方案,那就是基于Abstract

实践出真知——基于squid实现反向代理实践

实践出真知--基于squid实现反向代理实践 前言 ? 本文主要进行基于squid软件实现反向代理的实验流程演示,阅读本文前首先需要明白反向代理的概念和原理,其次需要基于上篇文章的实验从而继续进行. 实验流程 ? 上次做了透明模式正向代理实验,再此基础上完成反向代理的实操流程. 服务器规划 client ip:192.168.100.100(Win7/win10) squid 代理服务器IP地址:20.0.0.128 192.168.100.1 两台web服务器ip地址:web1:20.0.0.