Spring Framework 总览

57 阅读5分钟

Spring Framework 总览

Spring就是一个胶水,把所有的API和规范整合起来,在API设计方面有很大的优势。统一web、jms、jdbc等的支持;

  • spring是一个胶水框架,整合了java各个框架,核心包含了AOP,IOC。
  • spring的架构目标:让java程序能够更方便高效的整合各个框架,如事务,aop是用asm,aspjectj等,structs。

spring特性我理解是spring一些核心点,包含了:

  • 1.spring模块化设计,按需分配,spring tx模块启用,以及一些enbale注解形式启用某类能力
  • 2.技术整合:对于java特性的整合,以及各类框架的整合,如structs等。
  • 3.编程模型:面向对象编程,面向切面编程,面向元编程(对于bean有一些改变,如加入一些行为,包括bean的初始化特性),面向模块编程 面向函数编程:reactive,lambda

spring ioc: 实现bean的生命周期管理

其实是将业务开发人员在以往没有ioc框架的时候,需要自已在使用bean的时候去管理bean的实例注入。如:A类依赖B类,B类又依赖C类,那程序在使用A类的某个方法时,就需要去依次构建这些实例,这个工程管理及维护复杂度无疑是巨大的。

那IOC本质上就是为了解决这个问题,而实现包含了依赖查找和依赖注入。 IOC管理Bean的生命周期,解决开发对于bean的管理。 而Bean的管理包含了:bean的生命周期,bean的作用域(单例,还是每次请求都有一个bean实例) 而bean的实例化等管理特性是基于元数据的,包含了bean的scop定义,bean的一些属性定义等等,以及一些注解来实现注入。

而要实现如bean属性注入,则需要基础设施的支持。 基础设施包含了:资源文件定义,如用xml或properties资源文件。还包含了类型转换(资源文件定义的是string,最终注入bean是Integer的转换)。

一个简单的 DI 容器的实现原理,其核心逻辑主要包括:配置文件解析,以及根据配置文件通过“反射”语法来创建对象。其中,创建对象的过程就应用到了我们在学的工厂模式。对象创建、组装、管理完全有 DI 容器来负责,跟具体业务代码解耦,让程序员聚焦在业务代码的开发上。

核心特性(Core)

  • IoC 容器(IoC Container)
  • • Spring 事件(Events)
  • • 资源管理(Resources)
  • • 国际化(i18n)
  • • 校验(Validation)
  • • 数据绑定(Data Binding)
  • • 类型装换(Type Conversion)
  • • Spring 表达式(Spring Express Language)
  • 面向切面编程(AOP)

spring模块化设计:

按需引用模块,spring整合JAVA生态各个技术,进行封装提升;

image.png

源码是实现的手段,这里面会有思考的过程,换言之,学习源码并不在于如何理解它,而是要跳出条条框框,站在全局的高度去分析和思考,换位思考,那么,自己也可以像作者一样的思考~

Spring 对 JDK API 实践:

spring依赖于Java版本(JDK),Spring会不断升级支持更高版本的Java语言特性;与时俱进;

jdk主流的使用版本是8,升级JDK版本要考虑各个框架对JDK版本的支持;

spring对Java的API实现整合是非常深入的,包括很多的语法特性;

注解可以通过反射或ASM实现

Spring 对 Java EE API 整合

XXXTemplate(JDBC\JMS\REDIS)、XXXTransactionManager是spring对JAVAEE整合做了一个封装,简化操作

Java EE Web 技术相关

Java EE 数据存储相关

Java EE Bean 技术相关

Spring 编程模型

面向对象编程就是面向接口编程、面向切面编程就是动态代理、面向元数据编程就是配置文件和注解之类、面向驱动函数就是函数编程方式、面向模块编程就是不通实现重点创造不通模块使用时引用。

@Enable* 打包模块的方式一并来组装

Spring 核心价值

image.png

行为型设计模式核心是通过某种行为,这个行为主要是通过状态来改变,比如观察者模式在事件发送的时候,通过发送事件来扭转状态,帮助所有的监听者来监听到这个消息,处理这个消息。

面试题精选:

- 什么是 Spring Framework? Spring使创建Java企业版变得很容易应用程序。它提供了你需要拥抱的一切Java语言在企业环境下,支持 Groovy和Kotlin作为JVM上的替代语言,以及具有创建多种体系结构的灵活性取决于应用程序的需要。

  • Spring使创建Java企业应用程序变得容易。它提供了在企业环境中使用Java语言所需的一切,
  • 支持Groovy和Kotlin作为JVM上的替代语言,
  • 并具有根据应用程序的需要创建多种体系结构的灵活性。

关于这个问题每个人的答案可能不一样,按照自己的理解回答就可以了

Spring Framework 有哪些核心模块?

  • spring-core:Spring 基础 API 模块,如资源管理,泛型处理
  • spring-beans:Spring Bean 相关,如依赖查找,依赖注入
  • spring-aop : Spring AOP 处理,如动态代理,AOP 字节码提升
  • spring-context : 事件驱动、注解驱动,模块驱动等
  • spring-expression:Spring 表达式语言模块

劝退面试题 - Spring Framework 的优势和不足是什么?

答:这个问题的答案将贯穿整个系列