1. IoC
IoC:(Inverse of Control:控制反转);就是将原本在程序中手动创建对象的控制器,交给Spring容器来管理。
IoC 在其他语⾔中也有应⽤,并⾮ Spring 特有。 IoC 容器是Spring ⽤来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。
- 将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注⼊。这样可以很⼤程度上简化应⽤的开发,把应⽤从复杂的依赖关系中解放出来。
- IoC 容器就像是⼀个⼯⼚⼀样,当我们需要创建⼀个对象的时候,只需要配置好配置⽂件/注解即可,完全不⽤考虑对象是如何被创建出来的。
- 在实际项⽬中⼀个 Service 类可能有⼏百甚⾄上千个类作为它的底层,假如我们需要实例化这个 Service,你可能要每次都要搞清这个 Service 所有底层类的构造函数,这会造成很大的麻烦。
- 如果利⽤ IoC 的话,你只需要配置好,然后在需要的地⽅引⽤就⾏了,这⼤⼤提高了项⽬的可维护性且降低了开发难度。
2. AOP
AOP:(Aspect-Oriented Programming:⾯向切⾯编程):能够将那些与业务无关,却被业务模块所共同调用的逻辑或者责任封装起来(如事务处理、日志管理、权限控制等)。
Spring AOP是基于动态代理的。
- 如果要代理的对象实现了某个接口,那么Spring AOP会使用JDK proxy去创建对象。
- 如果要代理的对象没有实现接口,那么Spring AOP就会使用Cglib proxy来生成一个被代理对象的子类来作为代理。
参考:Spring IoC有什么好处呢?
Spring IOC 容器源码分析
https://www.iamshuaidi.com/1729.html