2022-01-19 IOC和AOP

哈哈哈,老生常谈~~什么是IOC(控制反转),什么是AOP(切面编程),啥是DI(依赖)
1 IOC 控制指的是,创建对象的控制权,反转,控制权 移交给了容器
传统的开发方式 :往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来(创建对象的控制权在对象中 A)
使用 IoC 思想的开发方式 :不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面去取即可(创建对象的控制器在容器,加载的时候就已经创建好)。
这里面 spring容器,可以理解为一个特别大的map容器,将所有用到的bean或者被标记的bean都纳入spring中(例如通过在bean 上添加注解 @Bean @Commpoent @Configure @Servcie等等);
IOC是一种思想,核心就是控制反转,当前最常见以及最合理的实现方式叫做依赖注入DI,可以说IOC等于DI,什么是依赖注入,就是A需要B,那么A依赖B,所以要B引入,引入的过程就是叫做依赖注入,之前通过new 现在通过容器注入

2 AOP 面向切面编程(高大上,这就是术语,把一个简单的词升级为晦涩难懂的词~~)
啥意思呢?切面是什么?
首先我们知道,java是面向对象编程的,这个一般入门的都是知道的,面向对象就是对象与数据库的表一一对应,虽然我想操作的是数据库的表,但是由于这种对应关系,我操作对象就行了,不在关心表了,所以就说是面向对象编程;
切面,没那么复杂,就是比如,我有十个类,然后每个类有两个方法,但是每个类都有一个共同的方法;这就出现了所有类的代码重复问题,为了解决这类问题,提出了横切逻辑,就是把这个公共方法单独提出来,这就是横切面即切面的思想;
面向切面呢,就是以这个思想为基础,然后并不仅仅是普通的类,还有注入到spring的bean都是同样如此,做一个横向拦截,执行一个或一些公共的方法;
常见的,比如validate框架,加上注解之后,所有的bean主要进入控制器之前,都要经过这个框架的校验,这就是典型的aop实现,AOP也是一种思想;

你可能感兴趣的:(2022-01-19 IOC和AOP)