热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spring整体架构

Spring是封装的很清晰的一个分层架构,Spring架构图如下:
Spring整体架构

Spring IoC

包含最为基本的IoC容器BeanFactory的接口与实现,在这个Spring的核心包中,不仅定义IoC容器的最基本接口(BeanFactory),也提供一 系列这个接口的实现,如XmlBeanFactory就是一个最墓本的BeanFactory (IoC容器),从名字上可以看到,它能够支持通过XML文件配置的Bean定义信息。

除此之外,Spring IoC容器还提供了一个容器系列,如SimpleJndiBeanFactory, StaticListableBeanFactory等。为了让应用更方便地使用IoC容器,还需要在IoC容器的外围提供其他的支持,这些支持包括Resource访问资源的抽象和定位等。

另外,在BeanFactory接口实现中,除了前面介绍的像BeanFactory那样最为基本的容器形态之外,Spring还设计了loc容器的高级形态ApplicationContext应用上下文供用户使用,这些ApplicationContext应用上下文.如FileSystemXmlApplicationContext,ClassPathXmlApplicationContext.对应用来说,是IoC容器中更面向框架的使用方式, 同样,为了便于应用开发,像国际化的消息源和应用支持事件这些特性,也都在这个模块中配合IoC容器来实现。

Spring AOP

这也是Spring的核心模块,围绕着AOP的增强功能,Spring集成了AspectJ作为AOP的一个特定实现,同时还在JVM动态代理/CGLIB的基础上,实现了一个AOP框架,作为Spring集成其他模块的工具,比如TransactionProxy FactoryBean声明式事务处理,就是通过AOP集成到Spring中的。

在这个模块中,Spring AOP实现了一个完整的建立AOP代理对象,实现AOP拦截器,直至实现各种Advice通知的过程。在对这个模块中,AOP模块的完整实现是我们熟悉AOP实现技术的一个不可多得的样本。

Spring MVC

对于大多数企业应用而言,Web应用已经是一种普遍的软件发布方式,而在Web应用的设计中,MVC模式已经被广泛使用了。在Java的社区中,也有很多类似的MVC框架可以选择,而且这些框架往往和Web UI设计整合在一起,对于定位于提供整体平台解决方案的Spring,这样的整合也是不可缺少的。

Spring MVC就是这样一个模块,这个模块以DispatcherServlet为核心,实现了MVC模式,包括怎样与Web容器环境的集成,Web请求的拦截、分发、处理和ModelAndView数据的返回,以及如何集成各种UI视图展现和数据表现,如PDF, Excel等,通过这个模块,可以完成Web的前端设计。

Spring JDBC / Spring ORM

:在企业应用中,对以关系数据库为基础的数据的处理是企业应用的一个重要方面.而对于关系数据库的处理,Java提供了JDBC来进行操作,但在实际的应用中,单纯使用JDBC的方式还是有些繁琐,所以在JDBC规范的基础上,SpringJDBC做了一层封装,使通过JDBC完成的对数据库的操作更加简洁。Spring JDBC包提供了JdbcTemplate作为模板类,.封装了基本的数据库操作方法,如数据的查询、更新等.另外,Spring JDBC还提供了RDBMS的操作对象,这些操作对象可以使应用以更面向对象的方法来使用JDBC,比如可以使用MappingSqlQuery将数据库数据记录直接映射到对象集合,类似一个极为简单的ORM工其。

除了通过Spring JDBC对数据库进行操作外,Spring还提供了许多对ORM工具的封装,这些封装包括了常用的ORM工具,如HibernateiBatis等,这一层封装的作用是让应用更方便地使用这些ORM工具,而不是替代这些ORM工具,比如可以把对这些工具的使用和Spring提供的声明式事务处理结合起来。同时,Spring还提供了许多模板对象,如HibernateTemaplate这样的工具来实现对Hibernate的驱动,这些模板对象往往包装使用Hibernate的一些通用过程,比如Session的获取和关闭、事务处理的关联等,从而把一些通用的特性实现抽象到Spring中来,更充分地体现了Spring的平台作用。

Spring事务处理

Spring事务处理是一个通过Spring AOP实现自身功能增强的典型模块。在这个模块中,Spring把在企业应用开发中事务处理的主要过程抽象出来,并且简洁地通过AOP的切面增强实现了声明式事务处理的功能。这个声明式事务处理的实现,使应用只需要在IoC容器中对事务属性进行配置即可完成,同时,这些事务处理的基本过程和具体的事务处理器实现是无关的,也就是说,应用可以选择不同的具体的事务处理机制,如JTA, JDBC, Hibernate等。因为使用了声明式事务处理.这些具体的事务处理机制被纳入Spring事务处理的统一框架中完成,并完成与具体业务代码的解耦,在这个模块中,可以看到一个通用的实现声明式事务处理的基本过程,比如怎样配置事务处理的拦截器,怎样读入事务配置属性,并结合这些事务配置属性对事务对象进行处理,包括事务的创建、挂起、提交、回滚等基本过程,还可以看到具体的事务处理器(如DataSourceTransactionManageribernateTransactionManagerJtaTran s actionMan ager等)是怎样封装不同的事务处理机制(JDBC, Hibernate, JTA等)的。

Spring远端调用

Spring为应用带来的一个好处就是能够将应用解耦。应用解耦,一方面可以降低设计的复杂性,另一方面,可以在解耦以后将应用模块分布式地部署,从而提高系统整体的性能。在后一种应用场景下,会用到Spring的远端调用,这种远端调用是通过Spring的封装从Spring应用到Spring应用之间的端到端调用。在这个过程中,通过Spring的封装,为应用屏蔽了各种通信和调用细节的实现,同时,通过这一层的封装,使应用可以通过选择各种不同的远端调用来实现,比如可以使用HTTP调用器(以HTTP协议为基础的),可以使用第三方的二进制通信实现Hessian/Burlap,甚至还封装了传统Java技术中的RMI调用。

Spring应用

从严格意义上来说,这个模块不属于Spring的范围。这部分的应用支持,往往来自一些使用得非常广泛的Spring子项目,或者该子项目本身就可以看成是一个独立的Spring应用,比如为Spring处理安全问题的Spring ACEGI后来转化为Spring子项目的Spring Security OAuth等。

这个Spring应用支持的部分还有一个重要的组成,那就是包括了其他的一些模块,这些模块提供了许多 Spring应用与其他技术实现的相关接口,比如与各种J2EE实现规范的接口,对JMS, JNID,JMX, JavaMail等的支持,Spring应用和Flex前端的接口,Spring应用移植到OSGi平台上运行的接口,通过这个模块的支持,使Spring应用可以便利和简洁地容纳第三方的技术实现,不但丰富了Spring应用的功能,而且丰富了整个Spring生态圈,使Spring应用得越来越广泛。

先了解Spring Framework基本架构,以后看源码就从这几个方面着手。


推荐阅读
  • Spring框架的核心组件与架构解析 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 通过利用代码自动生成技术,旨在减轻软件开发的复杂性,缩短项目周期,减少冗余代码的编写,从而显著提升开发效率。该方法不仅能够降低开发人员的工作强度,还能确保代码的一致性和质量。 ... [详细]
  • 观察 | 求职体验:收到录用通知的公司通常不深究技术细节,而那些详细追问的公司往往没有后续进展
    观察 | 求职体验:收到录用通知的公司通常不深究技术细节,而那些详细追问的公司往往没有后续进展 ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • Java并发机制详解及其在数据安全性保障中的应用方案 ... [详细]
author-avatar
有你世界就很美_484
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有