zoukankan      html  css  js  c++  java
  • spring简介

    初学spring,想慢慢的把自己对spring的学习理解记录下来,当然因为是初学,在记录的过程中会参照各位大牛的理解思路,因为在前辈们的理解中菜鸟才能更快的进步。

    一、什么是Spring:

        百度一下会发现一致的概念是:Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。、但是发现看完这句话并不能体会到spring的强大,没事先上图看一下spring长啥样

    这是spring的结构图,然而直到他长啥样了现在貌似并不怎么认识他,没事,接下就一点一点认识spring的各个组成部分

    二、spring核心架构体系(此处参照:http://www.cnblogs.com/wxisme/p/4751397.html)

      由上图我们会看到,spring是由五个部分组成的: Core Container、AOP、Web、Data Access、Test,我想将spring比作一个大家族的大管家,

    而这五个部分是大管家的五项能力,没有卓越的能力,大管家又怎么能管理好一个家族呢。接下来我们就看一下大管家到底有啥本领:

    1.Core Container------核心容器

       1)Core 模块:是框架的最底层的部分,spring也是代码不是吗,肯定也是遵守编程的通用知识的,比如类型转换、资源访问等,也就是大管家也是人嘛,人的基本样子还是有的;

       2)Beans模块:是框架基础模块,包括了IOC的依赖注入和反转控制,核心的Bean Factory,大管家需要在家中缺少人手的时候能够协调各处的人手;

      3)Context模块:以Core和Beans为基础,集成Beans模块功能并添加资源绑定、数据验证、国际化、Java EE支持、容器生命周期、事件传播等;核心接口是ApplicationContext。大管家在家中必须由必要的权利,Context就像大管家拥有管理家中事务的权利一样,能够代表Spring的上下文。

     4)EL模块提供强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring 容器获取Bean,它也支持列表投影、选择和一般的列表聚合等。显而易见EL是大管家的表达能力

    2.AOP、ASpects------面向切面编程

     AOP的思想类似于在一个家中具体到某一件事的执行时,大管家要安排这件事哪些人来做,每个人的任务是啥,怎么开始,怎么收尾,整个流程操控一遍。

    • AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,它实现了应该分离的功能。

    • Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。

    • Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。

    • Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息

    3.Data Access数据访问/集成

    • Transactions事务模块:该模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无需在代码中进行事务控制了,而且支持编程和声明性的事务管理。

    • JDBC模块:提供了一个JBDC的样例模板,使用这些模板能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处。

    • ORM模块:提供与流行的“对象-关系”映射框架的无缝集成,包括Hibernate、JPA、MyBatis等。而且可以使用Spring事务管理,无需额外控制事务。

    • OXM模块:提供了一个对Object/XML映射实现,将java对象映射成XML数据,或者将XML数据映射成java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。

    • JMS模块:用于JMS(Java Messaging Service),提供一套 “消息生产者、消息消费者”模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

    4.WEB

        Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:

    • Web 模块提供了基本的面向 web 的集成功能,例如多个文件上传的功能和使用 servlet 监听器和面向 web 应用程序的上下文来初始化 IoC 容器。

    • Web-MVC 模块包含 Spring 的模型-视图-控制器(MVC),实现了 web 应用程序。

    • Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。

    • Web-Portlet 模块提供了在 portlet 环境中实现 MVC,并且反映了 Web-Servlet 模块的功能。

     5.Test

           测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。

    三、这样我们就了解了spring的具体是什么:

    1)、Spring的核心是一个轻量级(Lightweight)的容器(Container)。
    2)、Spring是实现IoC(Inversion of Control)容器和非入侵性(No intrusive)的框架。
    3)、Spring提供AOP(Aspect-oriented programming)概念的实现方式。
    4)、Spring提供对持久层(Persistence)、事物(Transcation)的支持。
    5)、Spring供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
    6)、Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
    总之,Spring是一个全方位的应用程序框架。
    四、我们也大概了解spring能做什么:

    1).Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。

    2).Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。

    3)、在传统应用程序当中,我们如何来完成数据库事务管理?需要一系列“获取连接,执行SQL,提交或回滚事务,关闭连接”,而且还要保证在最后一定要关闭连接,多么可怕的事情,而且也很无聊;如果采用Spring,我们只需获取连接,执行SQL,其他的都交给Spring来管理了,简单吧。所以,Spring能非常简单的帮我们管理数据库事务。

    4)、Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板,来方便数据库访问。

    5)、Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。

    6)、Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。

  • 相关阅读:
    java之类的封装
    java飞机大战之子弹的自动生成
    java之线程飞机大战制作
    java线程游戏之背景图片的移动
    mysql的安装以及简单的命令符
    java之控制多幅图片
    java之线程
    JAVA之数组队列
    java之链表
    python之数据库的操作(课前准备)
  • 原文地址:https://www.cnblogs.com/Actexpler-S/p/7475536.html
Copyright © 2011-2022 走看看