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是为了解决企业级应用开发的复杂性而创建 ...
随机推荐
- 互联网点对点通讯(P2P)
摘自: http://www.cnblogs.com/zhili/archive/2012/09/14/p2p_pnpr.html 很遗憾,目前看了下代码,我测试只是做到了本地p2p. [C# 网络编 ...
- Android NDK的C++11标准支持
C++11于Android NDK它已被支持,本文介绍了如何NDK添加C++11支持标准. 在开源项目Cocos2d-x于,他已经加入C++11支持标准. 1.改动Application.mk文件,加 ...
- 解决方案命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
首先对System.Web.Mvc这个dll文件重新引用本地的,添加引用,搜索mvc就可以出来,选择相应的版本.如果还不能正常运行, 然后右键打开这个项目引用System.Web.Mvc, 将复制本地 ...
- Python系列教程大汇总
Python初级教程 Python快速教程 (手册) Python基础01 Hello World! Python基础02 基本数据类型 Python基础03 序列 Python基础04 运算 Pyt ...
- Git 一些常见的命令
git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git ...
- Kafka集群在空载情况下Cpu消耗比较高的问题
线上kafka与storm的空载情况下负载都比较高, kafka达到122%, storm平均负载达到, 20%, 当前是通过Ambari下管理kafka的, a. 先停止s5的kafka进程.b. ...
- 实现关闭ssh继续实施方案---tmux
问题1:为什么ssh一个关闭.不再执行的程序 罪魁祸首:SIGHUP 信号 让我们来看看为什么关掉形式/断开将使程序被执行死. 在Linux/Unix在.有几个概念: 进程组(process grou ...
- 新手可以学习cocos2dx 3.0 组态(两)
这主要是关于cocos3.0 组态,鉴于互联网已经有很多这样的文章.所以我简单谈一下: 1.python2.7 因为cocos目新建是用python脚本做的,至于为什么不用python3.x 那么请 ...
- 小猪Android越来越方式 Day 5 - part 2
小猪的Android入门之路 Day 5 - part 2 Activity片段:Fragment(碎片) ------转载请注明出处 ...
- [置顶] EasyMock的简单使用
EasyMock总览 下面,我将讲述如何使用JUnit和EasyMock框架来进行单元测试. 在现实情况下,我们通常是在一些类里使用另外的一些类.在进行真正的测试之前,你可能需要做很多的工作,比喻说安 ...