【Spring进阶系列丨第一篇】初识Spring框架

前言

小伙伴们大家好,我是陈橘又青,今天起《Spring进阶系列》开始更新。本专栏将涵盖Spring框架的核心概念、配置管理、Web开发、AOP、Boot、Security、Data、Integration和Batch等多个主题。通过理论讲解和实际案例的剖析,帮助读者深入理解Spring框架的原理和应用技巧,提升开发人员的技能水平。无论您是初学者还是有一定经验的开发者,都能在本专栏中找到有价值的内容。点此永久免费订阅,一起探索Spring框架的奥秘,提升您的开发能力!

文章目录


一、Spring框架概述

Spring是什么?

Spring 是分层的 Java SE/EE 应用 full-stack【全栈式】 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为核心,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架。

Spring倡导以 "最少侵入" 的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载 Spring。这里的"最少侵入"可以理解为:我们的项目中所使用的类无需继承框架提供的任何类,这样我们在更换框架时,之前写过的代码几乎可以继续使用。

轻量级:轻量级是相对于重量级而言的,轻量级一般就是非入侵性的、所依赖的东西非常少、资源占用非常少、部署简单等等 ,其实就是比较容易使用 ,而重量级正好相反


二、Spring的优势

  • 方便解耦,简化开发

    ​ 通过 Spring 提供的 IoC 容器,可以将==对象间的依赖关系交由 Spring 进行控制==,避免硬编码所造成的过度程序耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

  • AOP 编程的支持

    ​ 通过 Spring 的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付。

  • 声明式事务的支持

    ​ 可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。

  • 方便程序的测试

    ​ 可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是麻烦的操作,而是随手可做的事情。

  • 方便集成各种优秀框架

    ​ Spring 可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、SpringMVC、MyBatis等)的直接支持。

  • 降低 JavaEE API 的使用难度

    ​ Spring 对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些 API 的使用难度大为降低。

  • Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)

  • Java 源码是经典学习范例

    ​ Spring 的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对 Java 设计模式灵活运用以及对 Java 技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。


三、Spring能帮助我们做什么

  • Spring 能帮我们根据配置文件创建及组装对象之间的依赖关系
  • Spring 面向切面编程 能帮助我们无耦合的实现日志记录,性能统计,安全控制。
  • Spring非常简单的帮我们管理数据库事务
  • Spring提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成 ,而且自己也提供了一套JDBC访问模板来方便数据库访问。
  • Spring 还提供与第三方Web(如Struts1/2、JSF)框架无缝集成 ,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
  • Spring方便的与Java EE(如Java Mail、任务调度)整合 ,与更多技术整合(比如缓存框架)

四、Spring体系结构

Spring框架的体系结构通过分层的方式,将各种功能模块化,使得开发者可以根据需要选择和使用不同的模块,同时也使得框架本身更具有灵活性和可扩展性。

Spring框架的体系结构采用了分层的理念,根据功能的不同划分成了多个模块。这些模块大体可分为Data Access/Integration(数据访问与集成)WebAOP(面向切面编程)、AspectsInstrumentation(检测)、Messaging(消息处理)Core Container(核心容器)Test

核心容器的主要组件是BeanFactory,它是工厂模式的实现。Spring上下文是一个配置文件,向Spring框架提供上下文信息。此外,Spring框架中还有许多其他模块,例如Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中,而Spring DAO JDBC DAO抽象层提供了有意义的异常层次结构,用于管理异常处理和不同数据库供应商抛出的错误消息。Spring ORM提供了ORM的对象关系工具,其中包括JPA、JDO、Hibernate和MyBatis等。Spring Web模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文,而Spring MVC框架则是一个全功能的构建Web应用程序的MVC实现。


核心容器有spring-core、spring-beans、spring-context、spring-context-support、spring-experssion(SpEL、spring表达式语言、spring expression language)等。

  • spring-core:提供了框架的基本组成部分,包括IoC和依赖注入。
  • spring-beans:提供BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把编码和依赖从实际编码逻辑中解耦。
  • context:建立在core和beans模块基础上,它是一种类似JNDI的注册方式访问对象。Context继承自Bean,并添加了国际化事件传播、资源加载和透明的创建上下文等功能。Context模块也支持javaee功能。applicationcontext接口是context模块的焦点。spring-context-support提供了第三方集成到spring上下文的支持,如:缓存(Ehcache、Jcache、Guava)、邮件(javamail)、调度(commonJ、quartz)、模版引擎(freemarker、JasperReports)等
  • spring-expression:提供了强大的表达式语言,用于在运行时查询和操作图,它是JSP2.1中规定的统一表达式语言的扩展,支持get和set属性值、方法调用、访问数组集合及索引内容、逻辑算术运算、命名变量、通过名字对Spring IoC容器进行检索,支持列表的投影、选择及聚合等。

它们的依赖关系如下:

五、Spring的官网

Spring官网,开发者们可以获取到以下信息:

  • 各种关于Spring框架的详细介绍和文档。

包括各种Spring项目的信息(如Spring Boot、Spring、Spring Cloud等),以及如何搭建REST风格的web service和使用JPA等。

  • Spring各个版本的下载地址,包括jar包的链接和说明。
  • Spring的培训及证书认证信息。

此外,在首页上还会展示一些当前Spring比较流行的技术,帮助用户学习和使用Spring框架。


六、Spring的使命/理念

Spring的使命是解决企业级应用开发的复杂性,简化Java开发。它的设计目标是提供一个一站式轻量级应用开发平台。

Spring的设计理念是在JavaEE开发中,支持POJO和JavaBean开发方式,使应用面向接口开发,充分支持OO(面向对象)设计方法。它通过IOC容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给IOC容器,实现解耦。

这些理念和目标使Spring成为Java开发中重要的框架之一,帮助开发者提高开发效率,降低维护成本,提高代码的可维护性和可重用性。

总结:简化Java应用程序开发


《Spring进阶系列》专栏欢迎订阅(free),我们下篇见~

相关推荐
Asthenia04125 分钟前
理解词法分析与LEX:编译器的守门人
后端
uhakadotcom6 分钟前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
Asthenia04121 小时前
Spring扩展点与工具类获取容器Bean-基于ApplicationContextAware实现非IOC容器中调用IOC的Bean
后端
bobz9651 小时前
ovs patch port 对比 veth pair
后端
Asthenia04122 小时前
Java受检异常与非受检异常分析
后端
uhakadotcom2 小时前
快速开始使用 n8n
后端·面试·github
JavaGuide2 小时前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql
bobz9652 小时前
qemu 网络使用基础
后端
Asthenia04123 小时前
面试攻略:如何应对 Spring 启动流程的层层追问
后端
Asthenia04123 小时前
Spring 启动流程:比喻表达
后端