概念
定义
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
核心
IOC(Inversion Of Control)
IOC(控制反转):把本省自己创建对象的权利反转给了工厂(容器)
原来:我们在获取对象时,都是采用 new 的方式。 是主动的。
现在:我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。 是被动的。
对比如下:
IOC中bean的XML配置方式如下:
https://blog.csdn.net/Sunny5319/article/details/91493016
IOC中bean的注解配置方式如下:
https://blog.csdn.net/Sunny5319/article/details/91536025
DI(依赖注入)Dependency Injection。 它是 spring 框架核心 ioc 的具体实现。
我们的程序在编写时, 通过控制反转, 把对象的创建交给了 spring,但是代码中不可能出现没有依赖的情况。
ioc 解耦只是降低他们的依赖关系,但不会消除。 例如:我们的业务层仍会调用持久层的方法。
那这种业务层和持久层的依赖关系, 在使用 spring 之后, 就让 spring 来维护了。
简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。
分类:
(1)构造函数注入
(2)set方法注入
AOP(Aspect Oriented Programing)
AOP(面向切面编程)
1.AOP是基于IOC的,是对OOP的有益补充。
2.AOP是对程序进行横向切分,把程序中的公共部分抽离出来,如图:
原理
动态代理
JDK动态代理
— 基于接口的动态代理
JDK动态代理主要涉及java.lang.reflect包中的两个类:
Proxy(利用InvocationHandler动态创建一个符合某一接口的实例,生成目标类的代理对象)和InvocationHandler(接口)
CGlib动态代理
—基于类的动态代理
组件
Bean
Context
Core
参考文章
https://baijiahao.baidu.com/s?id=1627793055199571550&wfr=spider&for=pc