“Spring is the most popular application development framework for enterprise Java.”这是Spring官方首页上的第一句话,其中“enterprise”是一个很重量级的修饰语,它应该与“homework”和“exercise”有本质区别。那么何为“enterprise Java”?能够快速应对客户瞬息万变的业务需求是所有企业级开发的重中之重,当然对于开发enterprise Java application也不例外。换句话说,企业级Java应用程序不仅能正确地实现用户需求,还要能快速地应对用户需求变化。这句话正着说反着说都很容易,但要实现它却很困难。编写程序的语言已经从简单的机器指令进化到了程序设计的工具,设计原则的提出以及实现这些原则的设计模式的广泛应用,都在为此不断地努力。

  在这里停下来想想,表面上看技术潮流翻江倒海,其实都在解决着同一个问题。滚滚洪流中也有定海神针,Robert C. Martin提出的“S.O.L.I.D”原则:

  S = Single Responsibility Principle:一个类应该只有一个发生变化的原因。(There should never be more than one reason for a class to change.)

  O = Opened Closed Principle:软件实体(类、模块、函数等)应该可以扩展,但不可以修改。(Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.)

  L = Liscov Substitution Principle:子类型必须能够替换掉它们的父类型。(Subtypes must be substitutable for their base types.)

  I = Interface Segregation Principle:不应该强迫客户程序依赖并未使用的接口。(Clients should not be forced to depend upon interfaces that they do not use.)

  D = Dependency Inversion Principle:高层模块不应该依赖低层模块,两者都应该依赖于抽象。(High level modules should not depend upon low level modules. Rather, both should depend upon abstractions.)

  除此之外,日志记录,性能统计,安全控制,事务管理,异常处理等特性也是企业级应用程序必须要考虑的问题。综上所述,要想进行真正的企业级开发不是一项容易的工作,Spring由此而生。同样,受到技术浪潮的侵袭,当初以“轻量级”著称的Spring,现在看起来也相当的庞大,这算不算软件行业里的次贷危机呢。拨开过度宣传和速成培训的迷雾,才能看清IoC和AOP这两块躺在Spring河床里的金子。为什么说IoC、AOP有价值呢?因为它们可以降低程序的调用和被调用关系耦合度,从而增强程序的应变能力。与此同时,Spring其它方面的功能都是围绕着IoC和AOP展开的。有了这样的认识,理解和掌握Spring的配置和开发就很简单了。

About Spring的更多相关文章

  1. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  2. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  3. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  4. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  5. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  6. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  7. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

  8. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  9. Spring之旅(2)

    Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...

  10. Spring之旅

    Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...

随机推荐

  1. Hack 语言学习/参考---1.Hack 语言

    Table of Contents What is Hack? Hack Background Summary Hack is a language for HHVM that interopates ...

  2. Android 通过网络打开自己的APP(scheme)

    通过使用手机的浏览器(内部.第三方能够)访问网页,点击一个链接,开始实施自己的应用程序,和传输数据. 第一Mainifest面对文件启动Activity添加过滤器. <activity andr ...

  3. 开发环境准备:Ruby on Rails开发环境配置

    开发环境准备:Ruby on Rails开发环境配置 前情回顾 上次讲到Vmware虚拟机的安装配置以及Scientific Linux 6.X系统的安装.这回我们的主要任务是在Linux操作系统上完 ...

  4. 如何在局域网安装Redmine(转贴)

    如何在局域网安装Redmine(转贴) 分类: Redmine2009-06-01 10:31 1740人阅读 评论(0) 收藏 举报 phpmyadmin项目管理railssubversion数据库 ...

  5. MySQL5.7 安装过程中出现 attempting to start service 过不去

    MySQL5.7 安装过程中出现 attempting to start service 过不去. 1,机制打开服务,把MySql服务名启动(我的是MySqlAliyun) 启动失败:提示1067错误 ...

  6. css 初始化

    html,body,h1,h2,h3,h4,h5,h6,div,dl,dt,dd,ul,ol,li,p,blockquote,pre,hr,figure,table,caption,th,td,for ...

  7. [转]ANDROID 探究oom内幕

    从早期G1的192MB RAM开始,到现在动辄1G -2G RAM的设备,为单个App分配的内存从16MB到48MB甚至更多,但OOM从不曾离我们远去.这是因为大部分App中图片内容占据了50%甚至7 ...

  8. C#自带组件

    C#自带组件 在项目正式上线后,如果出现错误,异常,崩溃等情况 我们往往第一想到的事就是查看日志 所以日志对于一个系统的维护是非常重要的 贯穿所有的日志系统 日志系统,往往是贯穿一个程序的所有代码的; ...

  9. SZU:B47 Big Integer I

    Judge Info Memory Limit: 32768KB Case Time Limit: 10000MS Time Limit: 10000MS Judger: Normal Descrip ...

  10. 大数据工具篇之Hive与MySQL整合完整教程

    大数据工具篇之Hive与MySQL整合完整教程 一.引言 Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法. 二.安装 ...