“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. 音乐TV2015校园招聘A第二大发行量(对中国科学院大学站)

    标题叙述性说明:鉴于阵列A,尺寸n,数组元素1至n数位,但是,一些数字多次出现,有些数字不出现.请设计算法和程序.统计数据不会出现什么.什么号码多次出现. 您可以O(n)时间复杂度,O(1)求下完毕么 ...

  2. Hack 语言学习/参考---1.3 Summary

    Summary Hack provides the following, non-exhaustive list of features: Ability to annotate function a ...

  3. 关于springmvc 方法注解拦截器的解决方案,多用于方法的鉴权

    最近在用SpringMvc写项目的时候,遇到一个问题,就是方法的鉴权问题,这个问题弄了一天了终于解决了,下面看下解决方法 项目需求:需要鉴权的地方,我只需要打个标签即可,比如只有用户登录才可以进行的操 ...

  4. Java发送get及post请求工具方法

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  5. 转载:Linux Used内存到底到哪里去了?

    转自:http://blogread.cn/it/article/6264?f=wb2 有时在Linux下会碰到这样的问题:ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了 ...

  6. Ubuntu12.10无法安装openssh-server[已解决]

    因为要在Ubuntu下搞些东西,家里的台式有Deepin2013,但是发现有很多依赖的问题,实在不想解决,就到win7下用VBox安装了Ubuntu.打算使用SourceCRT连接虚拟机,但是在安装在 ...

  7. leetcode第九题--Palindrome Number

    Problem: Determine whether an integer is a palindrome. Do this without extra space. click to show sp ...

  8. CSS3的应用,你学会了吗?

    开场白 CSS3相对于CSS2引入了很多的新的css属性和特效,利用css3实现了原来需要加入js才能模拟的效果,因此前端性能提高了很多. 各大浏览器厂商包括IE都逐渐的加大对CSS3 HTML5的支 ...

  9. 读书笔记—CLR via C#字符串及文本

    前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可 ...

  10. Redis简介与简单安装

    Redis简介与简单安装   一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类 ...