Java核心知识盘点(三)- 框架篇-Spring

Spring的两大核心特性:IOC、AOP

  IOC:控制反转、依赖注入,它并不是一种技术实现,而是一种思想。把一些相互依赖对象的创建、协调工作交给Spring容器来管理,每个对象只需要关注其自身的业务逻辑关系就可以了,由Spring获取对象控制。

  AOP:面向切面编程,被定义为促使系统实现关注点的分离的技术。

BeanFactory和ApplicationContext的区别

1、BeanFactory:Bean工厂,用作于bean生命周期的管理

2、ApplicationContext:不仅仅有BeanFactory的概念,还有一个应用系统的上下文概念,初衷:对外暴露一个综合API.

 

BeanFactory的生命周期

https://blog.csdn.net/a327369238/article/details/52193822

 

什么是bean

  简单说是类,是可重复使用的java组件。所谓组件就是由一个或多个类可内部自行管理和运行,外部不了解其内部的信息或运行方式的群体。

Spring IOC原理

  控制反转、依赖注入,利用了工厂模式

  将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。

  spring的注入方式有两种:设置注入和构造注入

  设置注入:直观、自然

  构造注入:可以在构造器中决定依赖关系的顺序。

  

Spring AOP原理

  面向切面编程,利用了代理模式

  AOP可以说是对OOP的补充和完善,将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。

  实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码.

  aop在spring中主要表现为两个方面:

    1、aop提供声明式事务管理

    2、spring支持用户自定义切面

  aop框架具有的两个特征:

    1、各个步骤之间的良好隔离

    2、源代码无关性

 

Spring的优点

  1、降低组件之间的耦合,实现系统各层的解偶

  2、可以使用容易提供的众多服务,如事务管理、消息服务等

  3、容器提供单例模式支持

  4、容器提供了aop技术,利用它很容易实现如权限拦截,运行期监控等功能

  5、spring对主流的框架提供了支持,如:hibernate、jpa、struts等

  6、spring属于低侵入模式,代码的污染极低

  7、独立于各种应用服务器

  8、容器提供了众多辅助类,能加快应用的开发

  9、spring的di机制降低了业务对象替换的复杂性

  10、spring的高度开放性,并不强制应用完全依赖于spring,开发者可以自由选择spring的部分或全部

  

  

原文地址:https://www.cnblogs.com/cristin/p/9670008.html