`

Spring知识整理(一) —— 整体架构

阅读更多
   Spring框架倡导基于POJO(Plain Old Java Object,简单Java对象)的轻量级开发理念,其框架整体结构如下图(盗图一份):

    在Spring框架中,其它所有模块(Module)都是建立在其核心容器(Core Container)之上的,这个核心容器实际上是一个Ioc容器的实现。当然在最底层的模块中,除了这个核心容器外,还提供了框架内部使用的各种工具类(当然在框架之外使用也是可以的)。
    在核心容器与工具类之上是各种轻便但功能强大的模块。
   
    首先是AOP模块,AOP作为Spring质量三角型中的一条边,其作用和功能型自然不言而喻。AOP能干些什么,以我的理解,就是根据你的描述,找到一些特定或者说有共同特点的方法,在方法执行前后甚至抛出异常时做一些事情。很简单是不是,但AOP有时可以减少很多相同代码的重复书写,比如DAO的事务管理,再比如各种的权限验证,这些代码哪怕是抽象成公共方法也需要在每个方法中调用,麻烦且容易忘记,AOP就很好的解决了这种问题。关于AOP的详细知识将在以后细细道来。

    AOP模块之后就是O/R Mapping模块和DAO and JDBC模块,这两个模块其实是构建在AOP模块之上的,因为Spring的事务的访问和管理是基于AOP完成的。这两个模块提供了数据访问的功能,但实际开发和使用中,ORM这部分还是大多交由专门的框架负责,而Spring为各种当前流行的ORM框架,如Hibernate、iBATIS、Toplink、JPA等提供了形式统一的集成支持。

    关于Application Context模块其实可以归到核心容器中,Spring的ApplicationContext是对BeanFactory的一个扩展,其提供了更强大的Ioc容器实现,包括了自动初始化、国际化支持、容器内事件发布等。
    而Web Context模块是Application Context的一个扩展,主要是为Web应用提供类似的功能。

    Spring MVC,是一套Spring自己的Web MVC框架,它让Spring对前台有了一个很好的支持,并且可以继承很多很好用的Web服务引擎,比如Velocity、CXF、XFire等。

    最后,Spring还提供了对JEE服务的集成,包括JMX、JMS、JCA、EJB、JavaMail等等。

    说到这里,我们可以看出,Spring真的非常强大,我们可以用Spring提供的功能独立的完成传统的三层架构,也可以集成各种自己喜欢的框架和服务。最主要的是Spring带来的轻量级和松散耦合的特定,是我们的应用可以很好的维护和扩展。Spring的各种标准让我们的应用更加规范化。而Spring的Ioc、AOP等功能也能够很好的简化我们的代码,节省开发时间。

    总体来说就是一句话,如果你真的想学习一个框架或者一项技术,那就从一开始就认为这个技术非常牛掰,这样才能激发你足够的热情与求知欲。

    最后再多嘴一句,Spring很庞大也不简单,我只是一个菜鸟,写出来的东西最主要的目的不是为了有多少人看,只是想自己总结一些留下一些东西而已。
分享到:
评论

相关推荐

    Java毕业设计——网络考试系统的设计与实现(论文+答辩PPT+源代码+数据库).zip

    Java毕业设计——网络考试系统的设计与实现,是一个典型的软件工程实践项目,主要涵盖了Java编程语言、Web开发技术、数据库管理和项目管理等多个领域的知识点。在这个项目中,学生将学习到如何运用Java技术构建一个...

    基于springboot的多媒体素材库源码数据库.zip

    尽管本项目可能并未直接使用SSM架构,但其核心思想——模块化、解耦合的设计原则依然贯穿其中。 此外,项目的前端界面可能采用了JSP(JavaServer Pages)技术,这是一种动态网页技术,允许开发者在HTML页面中嵌入...

    适合新手练手的项目 java初学者 视频+源码+笔记都有度娘链接永久有效

    通过阅读源代码,学习者可以了解到项目的整体架构和技术实现细节,这对于理解和掌握Java编程语言非常有帮助。 ##### 4.3 学习笔记 学习笔记是对项目学习过程中的重点难点进行总结归纳的资料,可以帮助学习者巩固所...

    学生信息管理系统(含Java源代码) 毕业论文

    概要设计阶段,开发者将根据需求分析的结果设计系统整体架构,包括数据结构设计、模块划分和接口定义。在本系统中,可能分为学生模块、教师模块、管理员模块等,每个模块负责不同的功能,如学生模块主要处理学生个人...

    java就业班全套课程

    - **系统设计**:绘制用例图、类图等UML图示文档,规划整体架构。 - **编码实现**:根据设计文档完成代码编写工作。 - **测试调试**:采用单元测试、集成测试等多种手段确保产品质量。 - **部署上线**:将成品部署至...

    开题报告ssm462网络类课程思政学习系统的设计与实现+vue开题报告.doc

    \n- 技术架构:选择适合的开发框架,如SSM(Spring、SpringMVC、MyBatis)或Vue.js,以构建稳定、高性能的系统。\n\n1.4 系统实现的挑战与对策\n\n在实现过程中,可能遇到的技术挑战包括性能优化、并发处理、数据...

    大学生体质测试管理系统开发文档

    《大学生体质测试管理系统开发文档》是一份详尽的软件开发资料,主要针对的是教育领域中的一个具体应用——大学生体质测试的信息化管理。该系统旨在提高大学体育教学的效率,科学地记录、分析和评估学生的体质状况,...

    Java软件开发实习报告范文.docx

    - **概要设计**:根据需求分析的结果,设计系统的整体架构。 - **详细设计**:细化每个模块的设计细节,包括数据结构、算法等。 - **代码编写**:按照设计文档进行编码。 - **系统测试**:完成单元测试、集成...

    JAVA真实包装项目经验-二手车项目面试

    ### JAVA真实包装项目经验——二手车项目面试知识点...通过以上内容的整理和总结,可以清晰地了解到该项目的开发流程、技术选型、个人职责以及项目架构等方面的知识点,有助于面试者更好地准备相关的面试题目和场景。

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际...

Global site tag (gtag.js) - Google Analytics