JDK动态代理VS CgLib
业务场景 描述:每个旅客乘坐火车时,在上车、下车之前需要检票。站在乘客的角度,这个过程可以看做一件事:检票坐车检票;也可以看做两件事:检票,坐车;站在检票员的角度,那就是一件事,检票。 如果我们用代码实现,可能是这样的过程: checkTicket(); takingTrain(); checkTicket(); 如果有一天,车站变成刷身份证进站了,我们就得回去改代码了... 下面我们将这个过程分开,用代理来解决坐车意外的问题: 业务逻辑:坐火车 额外需要:检票/刷卡 具体实现 JDK动态代理,主要类、接口:Proxy, InvocationHandle,JDK动态代理特点只能对接口进行代理 所以需要一个业务逻辑接口:TakingTrain; package com.spring.mybean; public interface TakingTrain { public void takeTrain(String name); } 实现类:TakingTrainImpl------>要被代理的目标类,实现TakingTrain接口 package com.spring.mybean.imp; import com.spring.mybean.TakingTrain; public class TakingTrainImpl implements TakingTrain {