首页 > 其他分享 >为啥Spring原理中依赖注入之后,再做AOP代理依赖注入将失效

为啥Spring原理中依赖注入之后,再做AOP代理依赖注入将失效

时间:2024-07-24 21:17:32浏览次数:6  
标签:依赖 对象 代理 切面 AOP 注入

在java中,依赖注入(Dependency Injection,简称DI)是一种设计模式,它通过将对象的依赖关系从代码中移除,而是通过外部容器来管理和注入依赖。这样可以提高代码的可维护性和可测试性。
AOP(Aspect-Oriented Programming,面向切面编程)是另一种编程范式,它允许开发者在不修改原有代码的情况下,通过切面(Aspect)来添加额外的功能。AOP通常使用代理模式来实现,通过在目标对象的方法调用前后插入切面逻辑。
当使用依赖注入框架(如Spring)进行依赖注入时,它会通过动态代理来创建被注入的对象。这意味着,实际上得到的是一个代理对象,而不是原始的被依赖注入对象。这个代理对象会拦截方法调用,并在调用前后执行一些额外的逻辑,比如AOP切面。
然而,由于代理对象是运行时动态生成的,它不是原始对象的实例,因此它不会被依赖注入框架所管理。这就是为什么AOP代理依赖注入之后,原始对象的依赖注入将失效的原因。
解决这个问题的一种方法是使用AOP框架提供的特殊注解来标记需要注入的依赖,这样AOP框架就能够正确的处理依赖注入。另一种方法是在AOP代理中手动处理依赖注入,将依赖注入到代理对象中,并将方法调用委托给原始对象。
总结起来,当使用AOP代理时,原始对象的依赖将失效,因为得到的是代理对象而不是原始对象。可以通过AOP框架提供的特殊注解或手动依赖注入来解决这个问题。

标签:依赖,对象,代理,切面,AOP,注入
From: https://www.cnblogs.com/sixty-thousand/p/18321754

相关文章

  • Spectre.Console.Cli注入服务的几种姿势
    Spectre.Console大家可能都不陌生,写控制台程序美化还是不错的,支持着色,表格,图标等相当nice,如果对这个库不熟悉我强烈推荐你了解一下,对于写一些CLI小工具还是相当方便的,本文主要讲讲Spectre.Console.Cli的服务注入,TA是Spectre.Console库的一部分,用于创建命令行界面(CLI)......
  • .NET Core 核心知识点(四) -- 初会依赖注入
    控制反转、服务定位器、依赖注入  控制反转:使用对象或者服务的时候,不需要自己去创建/new服务,而是在使用的时候直接声明,容器会自动分配一个服务实例。相当于自己用发电机发电使用和利用电网公司的电的区别,自己发电,我需要一台发电机,安装发电机,自己设置电压,频率等等,而使用电......
  • [第一章 web入门]SQL注入-1
    [第一章web入门]SQL注入-1payload/index.php?id=1'and0unionselect1,2,group_concat(fllllag)fromfl4g--+?id=-1'unionselect1,2,group_concat(fllllag)fromflag--+Step库名?id=-1'unionselect1,2,group_concat(SCHEMA_NAME)frominformati......
  • [BJDCTF2020]EasySearch(ssi注入)
    看题目就知道藏的有东西挨个试试发现在index.php.swpvim缓存泄露,在使用vim进行编辑时,会产生缓存文件,操作正常,则会删除缓存文件,如果意外退出,缓存文件保留下来,这是时可以通过缓存文件来得到原文件,以index.php来说,第一次退出后,缓存文件名为index.php.swp,第二次退出后,缓存文件......
  • 在.NET MVC 中使用 Quartz.NET 创建可以修改时间的定时任务,并结合 Autofac 进行依赖注
    net4.6.1  nuget包Quartz  3.0Autofac  5.0Autofac.Mvc5 5.0  步骤1:创建Quartz任务首先,创建一个实现 IJob 接口的任务类。这个类将定义你希望定时执行的操作。publicclassMyJob:IJob{publicTaskExecute(IJobExecutionContextcontext)......
  • 通天星CMSV6车载视频监控平台 disable存在SQL注入漏洞
    一、漏洞简介通天星CMSV6车载视频监控平台是东莞市通天星软件科技有限公司研发的监控平台,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。通天星科技应用于公交车车载、校车车载、大巴车车载、物流车载、油品运输车载、警车......
  • CTF-SSTI模板注入
    SSTI就是服务器端模板注入(Server-SideTemplateInjection)当前使用的一些框架,比如python的flask,php的tp,java的spring等一般都采用成熟的的MVC的模式,用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结......
  • 同花顺股票数据逆向:Cookie加密和Hook注入
    ......
  • mybatisPlus3.4 自定义sqlSessionFactory sql注入器失效、mybatis-plus批量插入报错In
    文章目录一、报错背景二、解决方法在mybatis-plus项目中集成自定义批量插入方法后报错。以下整理一下报错及解决方法。一、报错背景mybatis-plus是不提供insertList批量插入方法的,本人在自定义批量插入方法后,启动时正常,但是执行到insertList时报错。org.apache.i......
  • 创建SpringBoot项目时出现Cannot resolve plugin org.springframework的解决方法 原
    创建SpringBoot项目时出现Cannotresolvepluginorg.springframework的解决方法原因是添加依赖时未添加版本号原因是添加依赖时未添加版本号解决方法:在pom.xml文件中的依赖添加版本号原来:<plugin><groupId>org.springframework.boot</groupId><a......