当前位置:首页 > CN2资讯 > 正文内容

spring代理对象都是代理对象吗spring 代理

11小时前CN2资讯

   最近看到一个比较有意思的问题,springIoc 产生的对象是否都是代理对象?答案是:spring ioc默认的都是原生对象  只有通过aop增强的对象才是代理对象。有@Transactional  注解或者配置文件:

  •  
<aop:config> <aop:pointcut id="txPointcut" expression="execution(* com..service.impl.*.*(..))" /> <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice" /></aop:config>

说到代理,又分为静态代理和动态代理。

静态代理

首先定义一个接口:

  •  
public interface Iuser { void save();} 接口实现:
  •  
public class UserService implements Iuser { @Override public void save() { System.out.println("save user 1"); }}
代理类:
  •  
public class UserServiceProxy implements Iuser{
Iuser iuser;
public UserServiceProxy(Iuser iuser) { this.iuser = iuser; }
@Override public void save() { System.out.println("save user before"); iuser.save(); System.out.println("save user after"); } 测试: public static void main(String[] args) { Iuser iuser = new UserService(); // 注入原生对象 UserServiceProxy userServiceProxy = new UserServiceProxy(iuser); userServiceProxy.save(); }输出:save user beforesave user 1save user after

   优点:

  • 易于理解和实现

  • 代理类和真实类的关系是编译期静态决定的,和下文马上要介绍的动态代理比较起来,执行时没有任何额外开销

  • 缺点:

    每一个真实类都需要一个创建新的代理类。

    动态代理

    实现方式有两种,一个是JDK原生动态代理这个必须是接口,还有一种就是cglib来实现。

    还有几个比较经典的面试题:

  • 一个类里面有transaction注解,在A方法里面调研B方法事务会不起作用?

  • 这个就因为B方法是通过this调用的,this代表的是当前的原生对象,以至于事务不起作用。

      2.为什么jdk动态代理必须基于接口 ?

         生成的代理类继承了Proxy,由于java是单继承,所以只能实现接口,通过接口实现 从代理模式的设计来说,充分利用了java的多态特性,也符合基于接口编码的规范 。

    3.spring 默认是哪种代理方式?

      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/24166.html

      分享给朋友:

      “spring代理对象都是代理对象吗spring 代理” 的相关文章

      蘑菇云:自然与核爆炸的惊人现象及其深远影响

      蘑菇云这个词,一提起来让人既熟悉又敬畏。它的外形就像个倒立的蘑菇,顶部宽大、底部则较小,这是因为它源自于强大爆炸所产生的气体。这种云朵看似平常,却是一种强烈爆炸后气体与空气混合的结果。虽然蘑菇云在现代多被与核爆炸联系在一起,但实际上,火山喷发及一些天体撞击也可能产生自然形成的蘑菇云。 了解蘑菇云的形...

      宝塔面板PHP扩展新增指南:提升网站性能的实用技巧

      在日常网站管理和服务器配置中,宝塔面板的出现让这一切变得更为简单直观。作为一个流行的服务器控制面板,宝塔面板以其用户友好的界面和丰富的功能备受欢迎。对于没有技术背景的用户来说,它提供了极大的便利,而对于开发者来说,宝塔也能高效管理复杂的服务器配置。 宝塔面板不仅支持多种服务器环境,还能够轻松管理数据...

      探索阿什本:全球数据中心之都的科技与美食之旅

      阿什本,这个名字或许在很多人耳中听起来并不陌生。作为美国弗吉尼亚州劳登郡的一部分,它距离华盛顿特区仅34英里,恰如其分地威尔士着城市的繁华。在我踏上这片土地的那一刻,便被它的快速发展与活力所吸引。阿什本不仅是一个城市,更是全球数据中心的中心,称其为“全球数据中心之都”可谓名至实归。 在阿什本,互联网...

      如何选择合适的IP站及其运作原理

      IP站的运作原理 在探讨IP站的运作原理之前,首先需要明确什么是IP站。简单来说,IP站是一种特殊的网络服务,它利用互联网协议(IP)提供不同的网络功能和服务。每个IP站都与一个或多个IP地址相连,能够用来访问信息、数据或应用程序。在我的网络体验中,无论是个人使用还是企业应用,IP站总是扮演着至关重...

      搬瓦工机场优惠:享受稳定快速网络服务的最佳选择

      在了解搬瓦工机场之前,我认为确实有必要先对这个服务进行全面的认识。搬瓦工机场(Just My Socks)是由加拿大著名VPS服务提供商搬瓦工(BandwagonHost)于2018年推出的一项机场服务。这个项目的目标是为用户提供更为便捷、快速的网络连接方式,尤其是在某些地区的网络受限时显得尤为重要...

      甲骨文云账号如何注销:详尽步骤与注意事项

      甲骨文云账号注销流程 注销甲骨文云账号的流程其实并不复杂,但有几个关键步骤需要认真对待。整个过程主要分为几个部分,包括登录甲骨文云控制台、发起注销请求、查看注销请求状态,以及最后的等待和确认删除。 1.1 甲骨文云控制台的登录 进入甲骨文云控制台的第一步,就是要登录到你的账号。打开浏览器,访问甲骨文...