Spring必要知识
bean
bean 是 Spring 框架的一个核心概念,它是构成应用程序的主干,并且是由 Spring IoC 容器负责实例化、配置、组装和管理的对象。
通俗来讲:
- bean 是对象
- bean 被 IoC 容器管理
- Spring 应用主要是由一个个的 bean 构成的
ApplicationContext
Spring 框架中,BeanFactory 接口是 Spring IoC容器 的实际代表者。
从下面的接口继承关系图中可以看出,ApplicationContext 接口继承了 BeanFactory 接口,并通过继承其他接口进一步扩展了基本容器的功能。
因此,org.springframework.context.ApplicationContext接口也代表了 IoC容器 ,它负责实例化、定位、配置应用程序中的对象(bean)及建立这些对象间(beans)的依赖。
IoC容器通过读取配置元数据来获取对象的实例化、配置和组装的描述信息。配置的零元数据可以用xml、Java注解或Java代码来表示。
另外,还有一堆各式各样的 context 继承了 ApplicationContext 接口,太繁杂不展开描述,仅供参考。
IoC
IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式。
IoC解决了什么问题
在IoC出现以前,组件之间的协调关系是由程序内部代码来控制的,或者说,以前我们使用New关键字来实现两组间之间的依赖关系的。
这种方式就造成了组件之间的互相耦合。IoC(控制反转)就是来解决这个问题的,它将实现组件间的关系从程序内部提到外部容器来管理。
也就是说,由容器在运行期将组件间的某种依赖关系动态的注入组件中。
包含了两个方面:一、控制。二、反转
控制指的是:当前对象对内部成员的控制权。
反转指的是:这种控制权不由当前对象管理了,由其他(类,第三方容器)来管理。
IOC容器的原理:IOC容器其实就是一个大工厂,它用来管理我们所有的对象以及依赖关系。
原理就是通过Java的反射技术来实现的!通过反射我们可以获取类的所有信息(成员变量、类名......)
再通过配置文件(xml)或者注解来描述类与类之间的关系
我们就可以通过这些配置信息和反射技术来构建出对应的对象和依赖关系了!
简单来看看实际Spring IOC容器是怎么实现对象的创建和依赖的:
-
根据Bean配置信息在容器内部创建Bean定义注册表
-
根据注册表加载、实例化bean、建立Bean与Bean之间的依赖关系
-
将这些准备就绪的Bean放到Map缓存池中,等待应用程序调用
AOP(面向切面编程)
Aspect Oriented Programming,面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
并且把应用业务逻辑和系统服务分开。
参考链接: