Spring整体架构

https://spring.io/

一、Spring整体架构

1.1 Why?

Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world's most popular Java framework.

1.2 What?

Features

  • Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP.

  • Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient.

  • Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.

  • Spring MVC and Spring WebFlux web frameworks.

  • Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.

  • Languages: Kotlin, Groovy, dynamic languages.

Spring整体架构_第1张图片

  1. 2.1 核心容器(Core Container)

包含模块spring-core, spring-beans, spring-context, spring-context-support,spring-expression.

  • spring-core 主要包含Spring框架基本的核心工具类
  • spring-beans 包含访问配置文件、创建和管理bean以及进行IoC/DI操作的相关类. BeanFactory
  • spring-context 构建与Core和Beans之上,继承了Beans的特性,扩展添加了国际化、时间传播、资源加载和对Context的创建和支持。ApplicationContext
  • spring-expression提供 一个强大的表达式语言用于在运行时查询和操作对象,该语言支持设置/获取属性值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算是运算符、命名变量以及从Spring的容器中根据名称检索对象
  1. 2.2 AOP和Instrumentation

包含模块spring-aop, spring-aspects, spring-instrument, spring-instrument-tomcat

  • spring-aop 提供了一个AOP联盟标准的面向方面编程的实现,它允许你定义方法拦截器与切入点,从而将逻辑代码与实现函数进行分离。
  • spring-aspects 提供了与AspectJ的集成
  • spring-instrument 提供了类工具的支持与classloader的实现,以便在特定的应用服务上使用。
  • spring-instrument-tomcat 包含了spring对于Tomcat的代理
  1. 2.3 消息(Messaging)

spring framework 4 包含了spring-messaging模块,其中使用了来自于spring integration项目的关键抽象,如Message, MessageChannel, MessageHandler等,他们可以作为基于消息的应用服务的基础。该模块还包含了一组可将消息映射到方法的注解,类似于spring-mvc的编程模型.

  1. 2.4 数据访问/集成(Data Access/ Integration)

包含spring-jdbc, spring-tx, spring-orm, spring-oxm, spring-jms.

  • spring-jdbc 提供了JDBC抽象层,消除了冗长的JDBC编码和解析数据库厂商特有的错误代码.
  • spring-tx 为实现了特定接口的类提供了可编程的声明式事务管理支持,对所有的POJOs都适用
  • spring-orm 提供了对象相关映射(ORM)集成,包含JPA, JDO, Hibernate,使用spring-orm模块可以将这些框架与spring提供的特性结合在一起使用,比如事务管理.
  • spring-oxm 提供了对Object/Xml Mapping实现的抽象,包括JAXB,Castor, XMLBeans, JiBX以及XStream.
  • spring-jms 包含了一些生产和消费消息的特性,从spring Framework 4.1开始,提供了与spring-messaging集成.
  1. 2.5 Web

包含spring-web, spring-webmvc, spring-websocket, spring-webmvc-portlet

  • spring-web提供了基于面向web集成的特性,如多文件上传功能、通过servlet listener初始化IoC容器与面向web的ApplicationContext,它还包含了HTTP客户端与Spring远程支持的web相关的部分.
  • spring-webmvc(又名web-servlet)包含了Spring对于Web应用的MVC与REST实现,Spring MVC框架提供了领域模型代码和Web表单之间的分离,并集成了Spring框架的所有其他特性.
  • spring-webmvc-portlet(又名web-portlet)提供了基于Portlet环境使用MVC的实现.
  1. 2.6 Test
  • spring-test模块支持Spring组件与JUnit或TestNG 的单元测试和 集成测试。它提供了Spring 的一致加载ApplicationContext和这些上下文的缓存。它还提供了可用于隔离测试代码的模拟对象

 

二、Spring技术核心

spring核心技术简单案例:IOC(DI)、AOP https://www.cnblogs.com/wmyskxz/p/8820371.html

日志实现案例(AOP):https://blog.csdn.net/qq_31279347/article/details/85106354

springboot两种方式实现AOP: https://my.oschina.net/u/2331760/blog/3020591

 

 

 

三、实践

手写spring

https://blog.csdn.net/litianxiang_kaola/article/details/86646947

https://www.jianshu.com/p/f57db8b29be9

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Spring5)