我记得刚开始学Spring的时候,只是很自然的把它当做一个类似其他J2EE的框架来学习。那时候学Spring很大一部分是为了以后面试需要,因为毕竟搞Java的,你说不会Spring这都有点说不过去。当时学完能搭个S2SH框架,并用S2SH开发几个系统,就把Spring扔在一边,因为毕竟还在学校,基本也用不上。本来那时候买了一本讲解Spring源码书的,想研究研究Spring源码,大家都说"Spring源码是一顿大餐",当时也想去尝尝。不过后来突然对Python感兴趣了,玩了一个学期Python,也就很少碰Java了,自然吃"Spring"大餐的事也就搁置了。

  临近毕业了为了以后面试工作的时候能多加点工资,又把Spring拿出来研究了。这次自己心平气和的静下心来研究,自己回想起自己刚学编程的时候,对于新的技术总是那么浮躁,看几个Demo,写点案例然后就完了,当然毕竟人的精力有限,学习东西要有侧重点,对于有些东西了解就可以了,用的时候在细细研究,而且就是研究深了你不用过一段时间久忘记了。这次重新学习Spring才发现Spring是多么神奇的框架,它几乎囊括了Java所有精华,Spring简直就是一个"超级工厂",而基于Spring的子项目几乎包括了所有企业开发要用到的东西,有时候我甚至在想我们学习Java的第一阶段就是学习Java的标准库;那么第二阶段我们可以认为是学习Spring,当然后面的阶段我可能还没接触到。

  Java标准库为我们提供了构建运用的基础"材料",我们运用这些基础"材料"构建我们自己的运用。我们运用这些基础"材料"构建成我们想要的一个个"组件"(或者对象),然后在组装这些组件构成我们的运用,这些过程全部是由我们控制的,也许有一天我们要维护或升级这个运用,需要替换掉当中的某些组件(或对象),我们就不得不深入到这些组件里面去修改,无疑这些工作量是很大的。这就好比加入一台没有操作系统的计算设备,里面的设备之间的协作全是我们自己编程实现的,假设有一天我们要给这个计算设备增加一个功能或者替换掉某个组件,这时我们不得不去里面修改代码,才能让这个新增的设备正常运行,假设这台计算设置安装有一台操作系统,每个设备之间都有特定的接口,假设我们要替换掉某个设备,只用把新的设备查到接口上,在安装好驱动,设备就可以正常运行了。

  没错我们完全可以把Spring当成我们运用中内存的操作系统,IOC就相当于操作系统的Kernel,其他一些模块你可以当做操作系统中显卡,声卡,鼠标键盘的驱动,这些服务都是可插拔,即开即用。Kernel调度这些设备的正常协作。

   简单点说,以前我们运用自己管理的自己的对象,现在我我们的运用构建于Spring之上,让Spring生产并管理运用中的对象(在Spring中称为Bean)。

   下面一张图:

有时候我觉得自己以后开发的所有运用完全都可以构建于Spring之上,我们只要写好Bean和配置文件,而且Spring也提供了很多强大的功能,而它的子项目应付一般的企业应用应该完全够了(我猜的)。

  最后说白了以前我们自己组织管理对象与对象之间的关系,现在我们让Spring帮我们组织管理对象与对象之间的关系,我们只有告诉它如何组织就可以啦。

  

初谈使用Spring的感受的更多相关文章

  1. running programmer——spring-01(初谈spring)

    今天主要是通过一个简单的登录程序学习一些spring做基础的配置和功能. I.spring的核心配置applicationContext.xml 关于bean的配置官方给出的最基础的配置文件如下: & ...

  2. 浅谈对Spring Framework的认识

    Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...

  3. 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配

    浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches) spring security中的BCryptPass ...

  4. 谈一下spring 的理解

    spring,大家基本都在使用,两个核心: 声明式事务AOP : 控制反转依赖注入IOC: 以前对控制反转和依赖注入很模糊,现在大概理解了意思,控制反转,有spring容易来控制bean 的创建,我们 ...

  5. 谈下spring下的 aop日志记录

    在我们开发当中  我们需要对系统用户行为和 系统异常信息有个统一记录  以便后期的 用户行为分析和bug修复   当我们有这个需求时  我们的通常采取方式很多 1.比如我们定义一个规范 开发一个接口 ...

  6. Spring 学习教程(一):浅谈对Spring IOC以及DI的理解

    一.个人对IoC(控制反转)和DI(依赖注入)的理解我们平时在开发java web程序的时候,每个对象在需要使用它的合作对象时,自己都要将它要合作对象创建出来(比如 new 对象),这个合作对象是由自 ...

  7. DICOM医学图像处理:WEB PACS初谈

    背景: 周末看到了一篇原公司同事的文章,讲的是关于新的互联网形势下的PACS系统.正好上一篇专栏文章也提到了有想搭建一个worklist服务器的冲动,所以就翻箱倒柜将原本学生时代做课题时搭建的简易We ...

  8. 初谈SQL Server逻辑读、物理读、预读

    前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...

  9. Yii2初谈

    Yii2发布有两个月时间了,一直没有去仔细关注过. 今天在回顾PSR标准时,稍稍扫了一眼Yii2.它的命名风格还是一如既往的与Zend那种既首字母大写又还要下划线连接的很二的命名风格格格不入.其实我看 ...

随机推荐

  1. hadoop 2.0 详细配置教程(转载)

    转载: http://www.cnblogs.com/scotoma/archive/2012/09/18/2689902.html 作者:杨鑫奇 PS:文章有部分参考资料来自网上,并经过实践后写出, ...

  2. Lucene实例教程

    Lucene是apache组织的一个用java实现全文搜索引擎的开源项目. 其功能非常的强大,api也很简单.总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像),Document ...

  3. linux —— 学习笔记(汇总)

    笔记目录:一.系统知识 和 基本概念                    二.常用操作                   三.系统管理(内存.设备.服务等管理)                   ...

  4. android如何建立数据库。(如何重写SQLiteOpenHelper)

    public class DBConnection extendsSQLiteOpenHelper{//继承SQLiteOpenHelper, public DBConnection(Context ...

  5. lvchange的available參数

    available參数在man info help中均无此參数,事实上參数为:activate 写此此.值得用的人注意. available 參数实为:  -a, --activate [a|e|l] ...

  6. DLL程序的创建步骤和測试程序

    首先,创建DLL程序 然后,加入一个导出类 比如: //Test.h #pragma once class AFX_EXT_CLASS Test { public:  Test(void);  ~Te ...

  7. asp.net mvc vs web form

    译者介绍 小小.NET学童,滴答…滴答…的雨…… 正文如下======================================================= 原文示例(VS2012): 1 ...

  8. android EditText中的inputType

    android 1.5以后添加了软件虚拟键盘的功能,所以在输入提示中将会有对应的软键盘模式 android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大 ...

  9. Java Applet读写client串口——终极篇

    測试环境: SDK:Oracle JRockit for Java version 6, Java Communication for Windows 2.0 OS:WINDOWS7 外设:串口条形码 ...

  10. staticMetaObject

    staticMetaObject : QObject 及其 子类 的静态属性成员. 定义如下: const QMetaObject staticMetaObject; QMetaObject 记录了 ...