Spring概述

Spring是最受欢迎的企业级Java应用程序开发框架。数以百万的来自世界各地的开发人员使用Spring框架来创建好性能、易于测试、可重用的代码。

Spring框架是一个开源的Java平台,它最初是由Rod Johnson编写的,并且在2003年6月手册在Apache2.0许可下发布。Spring是轻量级的。Spring框架的基础版本是2MB左右,Spring框架的核心特性是可以用于开发任何Java程序的,但是在Java EE平台上构建web应用程序是需要扩展的。Spring框架的目标是使J2EE开发变得更容易使用,通过启用POJO编程模型来促进良好的编程实践。

使用Spring框架的好处

下面列出使用Spring框架的主要的好处:

  1. Spring可以是开发人员使用POJOs开发企业级的应用程序。只是用POJOs的好处是你不需要一个EJB容器产品,比如一个应用程序服务器,但是你可以选择使用一个健壮的servlet容器,比如Tomcat或者一些商业产品。
  2. Spring在一个单元模式中是有组织的。即使包和类的数量非常大,你可以只要你需要的,而忽略剩余的那部分。
  3. Spring不会让你白费力气做重复的工作,它真正利用了一些现有的技术,像几个ORM框架,日志框架,JEE,Quartz和JDK计时器,其他的视图技术。
  4. 测试一个用Spring编写的应用程序很容易,因为environment-dependent代码被放进了这个框架中。此外,通过使用JavaBean-style POJOs,它在使用一类注入注入测试数据时变的更容易。
  5. Spring的web框架是一个设计良好的WebMVC框架,它为web框架,比如Structs或者其他工程上的或者很少受欢迎的web,提供了一个很好的供替代的选择
  6. 将特定技术的异常(例如,JDBC,Hibernate,或者JDO抛出的异常)翻译成一致的,Spring提供了一个方便的API,而这些都是未经检验的异常。
  7. 轻量级的 IOC 容器往往是轻量级的,例如,特别是当与 EJB 容器相比的时候。这有利于在内存和 CPU 资源有限的计算机上开发和部署应用程序。
  8. Spring 提供了一个一致的事务管理界面,该界面可以缩小成一个本地事务(例如,使用一个单一的数据库)和扩展成一个全局事务(例如,使用 JTA)。

依赖注入(DI)

Spring最认同的技术是控制反转的依赖注入(DI),控制反转(IoC)是一个通用概念,它可以用很多种不同的方式表达,依赖注入仅仅是控制反转的一个具体的例子。

什么是依赖注入:这里讲依赖关系部分转化为两个类之间的关联。例如,类A依赖于类B,注入指的是类B将通过IoC被注入到类A中。

面向方面的程序设计(AOP):

Spring框架的另一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑,有各种各样常见的很好的关于方面的例子,比如日志记录,声明性事物,安全性,和缓存等。

在OOP中模块化的关键单元是类,而在AOP中模块化的关键单元是方面。AOP帮助你讲横切关注点从他们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。

Spring-Spring概述的更多相关文章

  1. Spring Integration概述

    1.   Spring Integration概述 1.1     背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同 ...

  2. Spring Cloud 概述

    1. Spring Cloud 引言 首先我们打开spring 的官网:https://spring.io/ 我们会看到这样一张图片 这个图片告诉我们,开发我们的应用程序就像盖楼一样, 首先我们需要搭 ...

  3. (转)Spring的概述

    http://blog.csdn.net/yerenyuan_pku/article/details/69663685 Spring的概述 什么是Spring 据度娘所载: Spring是一个开源框架 ...

  4. 微服务与Spring Cloud概述

    微服务与Spring Cloud随着互联网的快速发展, 云计算近十年也得到蓬勃发展, 企业的IT环境和IT架构也逐渐在发生变革,从过去的单体应用架构发展为至今广泛流行的微服务架构. 微服务是一种架构风 ...

  5. Spring IOC 概述

    Spring IOC 概述 IOC(Inversion of Control) 控制反转,也叫 DI(D_ependency injection_) 依赖注入.是一种设计思想.不过我并不同意所谓反转的 ...

  6. 1.Spring 框架概述

    目录 Spring 框架概述 1 我们所说的 "Spring "是什么意思 2. Spring和Spring框架的历史 3. 设计理念 4.反馈和贡献 5.开始使用 Spring ...

  7. Spring系列之初识Spring Spring概述

    初始Spring 啥是Spring? 下面这个就是Spring Spring当然不是上面那个Spring,Spring之所以命名为Spring是因为这个开源的轻量级的开源框架的出现给软件行业带来了春天 ...

  8. 四、Spring——Spring MVC

    Spring MVC 1.Spring MVC概述 Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet负责截获请求并将其分配给响应的处理器处 ...

  9. Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少

    ————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己.我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员 一.思 ...

  10. Spring - Spring Boot - Actuator Web 访问开启

    1. 概述 打开 Spring Boot Actuator 的 Web 访问 2. 场景 之前看 Spring 的时候, 曾经想了解当时的配置 后来发现, 确实有这么个工具 刚开始发现, 除了 act ...

随机推荐

  1. PHP命名空间规则解析及高级功能

    日前发布的PHP .3中,最重要的一个新特性就是命名空间的加入.本文介绍了PHP命名空间的一些术语,其解析规则,以及一些高级功能的应用,希望能够帮助读者在项目中真正使用命名空间. 在这里中我们介绍了P ...

  2. 神器 cmder

    神器 cmder .wmd-input, .wmd-input:focus, #md-section-helper {font-size: 14px !important;line-height: 2 ...

  3. OpenCV3.1.0+VS2013配置+Win10(64位)(转载)

    OpenCV3.1.0+VS2013配置+Win10(64位) [环境]VS2013和MATLAB相互调用混合编程 Matlab 2016a和VS2013混合Dll编程步骤 更换了硬盘之后,重新配置了 ...

  4. [转]Python定时任务框架APScheduler

    APScheduler是基于Quartz的 一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以 持久化任务 ...

  5. 基于Spring框架的简单多数据源切换解决办法

    基于Spring框架的简单多数据源切换解决办法 Spring框架JDBC包提供了一个抽象类AbstractRoutingDataSource提供了动态切换数据库的基础方法.我们仅仅需要实现一个简单的数 ...

  6. STM32F4_TIM输入波形捕获(脉冲频率、占空比)

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来! http://www.captainbed.net/strongerhuang Ⅰ.概述 ...

  7. ubuntu12.10更新源

    ubuntu12.10更新源 2013-03-10 20:48:17|  分类: Linux |字号 订阅   不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就 ...

  8. Linux下vi命令小结

     进入vi的命令         vi filename :打开或新建文件,并将光标置于第一行首    vi n filename :打开文件,并将光标置于第n行首    vi filename :打 ...

  9. 由「Metaspace容量不足触发CMS GC」从而引发的思考

    https://mp.weixin.qq.com/s/1VP7l9iuId_ViP1Z_vCA-w 某天早上,毛老师在群里问「cat 上怎么看 gc」. 好好的一个群 看到有 GC 的问题,立马做出小 ...

  10. chckbox多选

    1.HTML结构 <input type="checkbox" name="test" value="1"/><span& ...