Spring事务Transactional和动态代理(一)-JDK代理实现
系列文章索引: Spring事务Transactional和动态代理(一)-JDK代理实现 Spring事务Transactional和动态代理(二)-cglib动态代理 Spring事务Transactional和动态代理(三)-事务失效的场景 什么是代理 理设计模式提供了对目标对象的间接访问方式,能力模式能够解耦合并且便于扩展目标的功能。 在现实生活这,我们消费者如果要去购买一杯牛奶的时候,并不是直接去找牛奶厂商购买,而是在便利店或者超市购买(零售商);超市进货的时候也通常不是直接找牛奶厂商,而是找市级代理(渠道经销商),市级代理再找省级代理(代理商),省级代理从牛奶生产商(厂商)提货。 如下图,虽然通过层层代理,一杯牛奶的价格会有增加,但是用户省却了时间(用户不能跑到内蒙去买牛奶)。 静态代理 静态代理的实现比较简单,代理类通过实现与目标对象相同的接口,并在类中维护一个代理对象。通过构造器塞入目标对象,赋值给代理对象,进而执行代理对象实现的接口方法 public interface Person { void eat(); } public class Child implements Person { @Override public void eat() { System.out.println("A Child eats something"); } } public