IOC与AOP的理解

转自 https://blog.csdn.net/qq_38006047/article/details/80797386

1,理解“控制反转”

   控制反转,也叫依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度。

  程序的耦合:调用者与被调用者的依赖关系。

 比如:程序员A负责编写A类,程序员B负责B类开发,A类的某些功能需要是梨花B类的对象调用其方法才能完成,那么A类就依赖B类,如果程序员B不写B类 难道程序员A要一直等下去?

 企业开发的原则:“编译时不依赖,运行时才依赖”

// 所谓的A类依赖B类
public class PersonServiceBean{
      private PersonDao personDao=new PersonDaoBean();
  
      public void save(Person person){
            personDao.save(person);
      }
}

PersonDaoBean是在应用内部创建及维护的。

所谓“控制反转”就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。

2,依赖注入

 当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean类就可以改成:

复制代码
public class PersonServiceBean{
      private PersonDao personDao;
      // 通过构造参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以使用setter方法进行注入
       public PersonServiceBean(PersonDao personDao ){
         this.personDao=personDao ;
 
      }
      public void save(Person person){
            personDao.save(person);
      }
}
复制代码

所谓依赖注入是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

Spring AOP

理解“面向切面编程”

比如在两个类中,可能都需要在每个方法中记录日志。按照面向对象的设计方法,我们就必须在两个日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这写重复的代码统一起来。

      也许会有人说,那好办啊,我们可以将这段代码写在一个独立的类中独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?

这种在运行时,动态地将代码切入到类的制定方法、指定位置上的编程思想就是面向切面编程。

简单地说就是不改变原程序的基础上为代码增加新的功能,对代码进行增强处理。

 

常用增强处理类型:

 

posted @   野生野鸡码农  阅读(339)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示