About Spring
“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的更多相关文章
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Spring之旅(2)
Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...
- Spring之旅
Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...
随机推荐
- WebBrowser控件应用:播放PPT文件
原文:WebBrowser控件应用:播放PPT文件 一开始想的是用webform来做,用iframe加载文件,把ppt文件另存成htm,然后播放. 可是后来发现,的程序不大容易控制,所以改用winfo ...
- AngularJs + ASP.NET MVC
[AngularJs + ASP.NET MVC]使用AntularJs快速建立ASP.NET MVC SPA網站 這幾天接觸到了AngularJs的美麗,讓饅頭有點躍躍欲試使用AngularJs來做 ...
- JS判断字符串是否全为中文
//第一种代码(全为中文则返回"true",不全为中文则返回"false"): <script language="javascript&quo ...
- sql点滴42—mysql中的数据结构
原文:sql点滴42-mysql中的数据结构 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小 ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- OSG(OpenSceneGraphcow.osg)配置笔记
OpenSceneGraph是一款高性能的3D图形开发库.广泛应用在可视化仿真.游戏.虚拟现实.高端技术研发以及建模等领域.使用标准的C++和OpenGL编写而成,可以运行在Windows系列.OSX ...
- PhpStorm创建Drupal模块项目开发教程(4)
编码器是一个检查和操纵代码的Drupal-specific工具. 探测器则是发现异常代码,通常被用于开发中的编码错误预警. 接下来将介绍编码器与探测器在PhpStorm中整合工作的各个步骤,实现PHP ...
- Rails当你运行一个数据库回滚错误:ActiveRecord::IrreversibleMigration exception
最近rails3.2在更改数据库表字段,然后要回滚取消,但在运行rake db:rollback命令,错误: rake aborted! An error has occurred, all late ...
- SQLCMD的介绍
原文:SQLCMD的介绍 sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -i filename.sql 下面的内容是详细介绍sqlcmd的,有兴趣的朋友可以 ...
- 使用jquery.form异步提交注意jquery.validate需要手动添加验证
使用jquery.form.js异步提时,即使jquery.validate验证失败也会提交的所以加个$("form").valid()来判断是否通过验证: $("#fo ...