前言

哈喽大家好,我是卡诺,一名致力于成为全栈的全粘工程师!

相信每一个javaer都经历过Servlet、Seesion、Cookie等技术进行web项目开发。那个时候从项目伊始到项目完成,过程是艰苦的,维护是欲哭无泪的。直到遇见Spring,它将我们的开发从“刀工火种”带到“机械化”时代,如今SpringBoot大放光彩,使得项目开发直接一步封神。

今天呢!我们就一起来聊一聊Spring家族体系的核心基石-​​Spring Framework​​项目!

本文已加入​ ​【Spring系列】​ ​​​专栏!

简介

Spring(SpringFramework,后续均简称为Spring) 是一个开源的、松耦合的,可以让Java创建企业级应用更加容易,提供了Java语言在企业环境中需要的一切,并支持类似于JVM的第二语言,如Groovy 和Kotlin,同时根据需要灵活的创建出不同的软件架构。

Spring的核心是IOC(用于组件解耦)和AOP(切面编程,可以实现业务和增强逻辑解耦)(IOC和AOP这个我们后面的文章细说)!除此之外,Spring还管理着应用中的组件Bean、事物控制、事件、监听器等,更是为我们提供了其他技术的整合包,方便我们项目开发使用。

Spring模块

Spring包含了大大小小二十多个模块,这些模块基本上覆盖了我们日常开发所需,模块展示如下:

分类

模块名

备注

核心容器(核心)

spring-core

Spring 基础 API 模块,如资源管理,泛型处理

spring-beans

Spring Bean 相关,如依赖查找,依赖注入

spring-context

为Spring核心提供大量扩展,事件驱动、注解驱动,模块驱动等

spring-core

Spring 表达式语言模块(EL表达式)

spring-context增强

spring-context-indexer

通过在编译时创建候选对象的静态列表来提高大型应用程序的启动性能。在此模式下,作为组件扫描目标的所有模块都必须使用此机制。

spring-context-support

包含支持缓存Cache(ehcache)、JCA、JMX、 邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。

AOP(核心)

spring-aop

Spring核心模块,包含动态代理,AOP 字节码提升

spring-aspects

集成AspectJ,为Spring提供多种AOP实现方法

spring-instrument

Spring的Instrumentation模块提供为JVM添加代理(agent)的功能。主要作用于JVM启动时,生成代理类,并通过运行时修改类的字节码形式,实现AOP功能

日志框架

spring-jcl

外部引入的日志框架不断变化,Spring这里采用统一的框架进行维护管理

数据控制访问

spring-jdbc

JDBC模块,简化JDBC编程

spring-orm

orm框架支持,集成JPA、Hibernate,用于数据访问,资源管理等

spring-oxm

Object-To-XML-Mapping,XML 编列(xml序列化/反序列化)

spring-r2dbc

r2dbc响应式数据库

spring-tx

事务控制模块

消息服务

spring-messaging

Spring消息服务的统一实现标准,包括JMS、kafka、Rabbit MQ、Active MQ

spring-jms

Java Messaging Service 控制消息接受和发送,如:Apache Active MQ等消息中间件

web

spring-web

提供基础web支持

spring-webflux

非堵塞函数式Reactive Web框架,可以用来建立异步的、非阻塞事件驱动的服务

spring-webmvc

WebServlet模块,实现了Model View Controller应用

spring-websocket

为socket通信提供相关支持

测试框架

spring-test

包含Mock,TextContext测试上下文,为测试提供支持

模块关系

【Spring系列】Java的春天-Spring_spring

总结

  • 本章主要概述SpringFramework基本能力,并介绍了Spring各个模块的含义,以及模块之间的关系;
  • Spring的核心模块主要是:​​spring-core​​​、​​spring-beans​​​、​​spring-aop​​​、​​spring-context​​​、​​spring-expression​​,也是我们该系列接下来要深入的主要模块。

关联文章

​​​​

最后

  • 感谢铁子们耐心看到最后,如果大家感觉本文有所帮助,麻烦给个​赞????​或​关注➕​;
  • 由于本人技术有限,文章和代码可能存在错误,希望大家评论指出,万分感激????;
  • 同时也欢迎大家一起讨论学习前端、Java知识,一起卷一起进步。