小伙伴们大家好,我是陈橘又青,今天起 《Spring进阶系列》 开始更新。本专栏将涵盖Spring框架的核心概念、配置管理、Web开发、AOP、Boot、Security、Data、Integration和Batch等多个主题。通过理论讲解和实际案例的剖析,帮助读者深入理解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 提供的 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框架的体系结构采用了分层的理念,根据功能的不同划分成了多个模块。这些模块大体可分为Data Access/Integration(数据访问与集成)、Web、AOP(面向切面编程)、Aspects、Instrumentation(检测)、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 Boot、Spring、Spring Cloud等),以及如何搭建REST风格的web service和使用JPA等。
此外,在首页上还会展示一些当前Spring比较流行的技术,帮助用户学习和使用Spring框架。
Spring的使命是解决企业级应用开发的复杂性,简化Java开发。它的设计目标是提供一个一站式轻量级应用开发平台。
Spring的设计理念是在JavaEE开发中,支持POJO和JavaBean开发方式,使应用面向接口开发,充分支持OO(面向对象)设计方法。它通过IOC容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给IOC容器,实现解耦。
这些理念和目标使Spring成为Java开发中重要的框架之一,帮助开发者提高开发效率,降低维护成本,提高代码的可维护性和可重用性。
总结:简化Java应用程序开发
《Spring进阶系列》 专栏欢迎订阅,我们下篇见~