我的Spring之旅(一)Spring概述and最小入侵性编程
来源:互联网 发布:阿里云路况预测 编辑:程序博客网 时间:2024/05/19 04:56
我们都知道spring可以做很多事情,但我们仔细研究就会发现,我们最常用的,也是Spring最核心的特性仅仅是依赖注入(DI Dependency Injection )和面向切面编程(AOP Aspect Oriented Programming)。但归根结底Spring的使命就是简化java开发。
spring使用4中关键的策略来实现其目的:
1.基于pojo的轻量级和最小入侵性编程;
2.通过依赖注入和面向切面编程实现松耦合;
3.基于切面和惯例进行声明式编程;
4.通过切面和模板减少板式代码;
几乎Spring做的任何事情都可以追溯到上面的一条或者多条核心策略,我们可以通过一些案例进一步阐明这些理念。
下面我们就从基于pojo的最小入侵性编程开始说起
当我们接触过java编程一段时间之后就会发现很多框架会强迫应用继承他们的类或实现他们的接口从而让应用和框架进行绑死。一个典型的例子是EJB2的无状态会话bean,例如下面代码片段中所示
从代码片段中我们可知ejb让一段简单的代码变得十分的臃肿,SessionBean的接口允许我们实现若干个生命周期回调方法以便参与到ejb的生命周期内。换种说法可能更好理解--SessionBean接口强迫你参与到ejb的生命周期里来,即使你不想这么做。其中代码片段中大部分代码都是为了使用ejb而写。那么问题来了---------挖掘机哪家强?(开个玩笑,哈哈)
那么问题来了---------到底谁应该为谁服务?
EJB2并不是特例,其他的一些流行框架也是这样,例如早期版本的Struts、WebWork等等,这些重量级框架都存在这些问题:强迫开发者编写大量冗余代码、应用与框架绑定不易于迁移,通常也很难编写测试代码。(这并不是说这些重量级框架不好)
Spring竭力避免因为自身的API弄乱开发者的代码。Spring不会强迫你实现Spring的一些接口或者集成Spring规范的类,通常我们在使用Spring的时候没有任何痕迹说明你使用了Spring除了注解
下面是代码片段Spring的pojo
是不是看起来好多了,没有一些乱七八糟的代码。
这个对比就说明了以上Spring简化java开发的核心策略之一:最小的入侵性编程。
ps:本系列文章是类似于读后感+读书笔记之类的东西,有意请参阅Spring In Action
- 我的Spring之旅(一)Spring概述and最小入侵性编程
- Spring基础(一)之Spring概述
- Spring学习之Spring概述(一)
- 我的spring之旅一
- Spring(一)---Spring概述
- spring之注解(一)概述
- 我的spring之旅之AOP编程
- Spring之Spring概述
- Spring学习系列-----(一)Spring概述
- 深入浅出Spring(一)Spring概述
- (一)Spring就是这样- Spring概述
- Spring学习笔记(一)---Spring概述
- spring笔记(一) spring框架概述
- Spring学习笔记(一)Spring 概述
- Spring核心(一)概述
- Spring核心(一)概述
- Spring学习(一)概述
- Spring学习(一)概述
- linux arm的存储分布
- OpenRowSet SQLServer 2012中 打开excel文件
- Cassandra在CQL语言层面支持多种数据类型[12]。
- AndroidStudio相关操作
- html_entity_decode() 和 htmlentities()
- 我的Spring之旅(一)Spring概述and最小入侵性编程
- android-pluginmgr不需要插件规范的apk动态加载框架
- SQL Server 2008 定时作业的制定(SQL2005参考此方法)
- Android自定义View(ProgressBar)
- android应用桌面图标不更新的问题
- 从Java代码远程提交YARN MapReduce任务
- github创建分支上传自己的文件代码
- 历届试题 矩阵翻硬币
- 使用ant编译Android工程(一)