当前位置: 首页 > news >正文

Spring中的AOP和IOC(八股文)

AOP:

SpringAOP(面向切面编程)时Spring框架中的一个重要模块,用于解决系统中的横切关注点问题。所谓横切关注点,指的是系统中分散在各个模块中、与主页务逻辑无关的代码,例如日志记录,事务管理,权限控制等。

SpringAOP采用代理模式实现,它通过在运行期间动态代理目标对象,将横切关注点织入到系统中,从而实现了业务逻辑与横切关注点的分离。SpirngAOP主要有以下几个概念组成:

  1. 切面:切面是一个类,它包含了一组横切关注点和相应的逻辑。一个横切面通常会跨越多个对象,因此它不仅定义了横切关注点,还定义了横切关注点与业务逻辑的关系。
  2. 连接点:连接点是程序执行期间可以插入切面的点。例如方法调用、异常抛出等。
  3. 切入点:切入点是一组连接点的集合,它定义了在那些连接点上应用的切面。例如所有的方法调用、所有的异常抛出等。
  4. 通知:通知时切面在特定连接点执行的代码。SpringAOP提供了五种类型的通知:前置通知、后置通知、返回通知、异常通知和环绕通知。
  5. 切面织入:切面织入是将切面应用到目标对象并创建代理对象的过程。

SpringAOP通过配置文件或注解的方式来定义切面,连接点,切入点和通知等信息,并使用代理模式将切面织入到目标对象中。通过AOP技术,可以有效地解耦业务逻辑和横切关注点,提高了系统的可维护性和可扩展性。

AOP的实现方式:

AOP有两种实现方式:静态代理和动态代理。

静态代理:

代理类在编辑阶段生成,在编译阶段将通知织入到Java字节码中,也称为编译时增强。缺点:代理对象需要与目标对象实现一样的接口,并且实现接口的方法,会有冗余代码。同时,一旦接口增加方法,目标对象与代理对象都要维护。

动态代理:

代理类在程序运行期间是创建,AOP框架不会去修改字节码,而是在内存中临时生成一个代理对象,在运行期间对业务方法进行增强。动态代理主要有两种实现方法:

  • JDK动态代理:JDK动态代理要求被创建代理的类必须实现一个接口,它通过反射来接受被代理的类,并使用接口和类实现代理
  • CGLIB动态代理:CGLIB动态代理则是一个代码生成的类库,它可以在运行时动态地生成某个类的子类,通过继承的方式实现代理。如果目标类没有实现接口,SpringAOP会选择使用CGLIB来动态代理目标类。

IOC:

SpringIOC是Spring框架中的核心,它实现了一种基于容器的对象管理机制。在SpringIOC中,控制权由应用程序代码转移到了Spring框架中,Spring框架负责创建对象、管理对象之间的依赖关系、调用对象的方法等操作,应用程序只需要声明需要使用的对象和依赖关系,无需自己负责对象的创建和管理,从而实现了控制反转。

在SpringIOC中,容器负责创建和管理对象,容器根据配置文件或者注解中的信息,自动创建和管理对象之间的依赖关系,然后将这些对象注入到应用程序中。应用程序只需要声明需要使用的对象和依赖关系,通过注入的方式获取这些对象,从而避免了硬编码和耦合性的问题。

SpringIOC的主要实现方式是依赖注入来实现的。依赖注入是指在对象创建的过程中,自动注入该对象所依赖的其他对象,从而构建对象之间的依赖关系。SpringIOC支持多种依赖关系的注入的方式,如构造器注入Setter方式注入,字段注入。

总的来说,SpringIOC提供了一种松耦合,可重用,可维护的编程模式,是的应用程序更加容易开发,测试和扩展。通过使用SpringIOC,应用程序可以更加关注业务逻辑,而不需要过多关注对象的创建和管理。

http://www.jsqmd.com/news/303918/

相关文章:

  • 重庆地区有哪些研究生留学中介?top10推荐,录取率高
  • 污水处理设备怎么挑?2026年这些厂家不容错过,科研院所污水处理设备/RO膜滤芯,污水处理设备实力厂家哪家好
  • 2026年休闲裤品牌推荐:多场景穿着评测,解决舒适与耐用痛点并附购买排名
  • 邦芒宝典:职场新人必备的10个高效法则
  • 一文搞懂RPC、gRPC与Protobuf:分布式通信的核心技术栈
  • MybatisPlus工具(详细教程)
  • 007 商务 item_search - 根据关键词获取商品列表接口对接全攻略:从入门到精通
  • 污泥浓度水质在线监测仪:实时掌握水体污浊状态
  • 覆盖海内外车型,佑驾创新获13亿智能驾驶大单
  • 医疗系统Vue大文件加密上传DEMO?
  • 手搓1KB深度学习与大模型:极限压缩下的智能本质探索
  • 能源化工Vue大文件插件上传DEMO?
  • 工厂质检如何提高效率减少人工?思看科技自动化3D检测系统+TrackScan解决方案推荐
  • 船舶改造没有原始图纸怎么办?思看科技TrackScan-Sharp快速测绘方案来啦!
  • Active Planning 和 Tools 如何对接业务需求
  • 2026年化妆品包材工厂推荐:针对初创与成熟品牌痛点,提供全流程服务深度评价
  • 2026成都优质铝单板厂家推荐榜
  • 2026年1月看过来,防爆箱口碑好的品牌哪家好揭晓,软启动配电柜/馈电防爆箱/固定式配电箱/昆明配电柜,防爆箱厂商找哪家
  • 学长亲荐8个AI论文写作软件,专科生搞定毕业论文不求人!
  • YOLO26优化:注意力魔改 | 通道优先卷积注意力(Channel Prior Convolutional Attention,CPCA)| 中科院 发布
  • YOLO26优化:卷积魔改 | DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测
  • YOLO26优化:特征融合 | 一种新颖的多尺度特征融合iAFF,适配小目标检测
  • YOLO26涨点优化:红外小目标 | 注意力改进 | 多膨胀通道精炼(MDCR)模块,红外小目标暴力涨点
  • 英国超四分之一员工担心未来五年内被AI取代
  • YOLO26优化:红外小目标 | 注意力机制改进 | 维度感知选择性集成模块DASI,红外小目标暴力涨点
  • YOLO26优化:小目标检测 | 多头检测器提升小目标检测精度
  • YOLO26优化:轻量化卷积魔改 | 新的partial convolution(PConv)结合C3k2 | CVPR2023
  • YOLO26可视化:多种绘制曲线对比图,为科研保驾护航
  • 本地部署微信公众号文章搜索 MCP 服务 weixin_search_mcp 并实现外部访问
  • YOLO26优化:卷积魔改 | 动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023