我记得刚开始学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. Linux下设置文件权限

    文件权限示意图: 第一步:在终端创建用户 增加用户 useradd 用户名 设置密码 passwd 用户名 通过上述两条命令创建a1,a2两个用户. 第二步:在根目录使用管理员账号创建一个文件 在使用 ...

  2. sqlserver使用户只能在某个架构下建立表和存储过程

    1.首先,建立一个用户之后,默认的架构是dbo,默认的角色是public.这种情况下,这个用户将看不到dbo以及其他架构下的对象.除非单独进行授权.   2.新建一个架构test,然后使得这个架构的所 ...

  3. C语言学习_从VC++6.0开始

    前言: C语言是一门博大精深的语言,C语言往往是程序员以及所有软件行业从业者的第一门编程语言. 编程环境: 对于初学者来说,我一开始学习C语言,其实是用的turboc 2.0版本,这个很有历史感,但是 ...

  4. redis linux 基本命令

    找到一个哥们 写的都是一步步打基础的学习东西 不光是知识也是学习方式 都值得学习.. reids 传送们-->> http://xuelianbobo.iteye.com/category ...

  5. mybatis3温故

    MyBatis可以利用SQL映射文件来配置,也可以利用Annotation来设置.MyBatis提供的一些基本注解如下表所示. 注解 目标 相应的XML 描述 @CacheNamespace 类 &l ...

  6. 如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测

      系统编程中一个重要的方面就是有效地处理与内存相关的问题.你的工作越接近系统,你就需要面对越多的内存问题.有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦.所以,在实践中会用到很多工 ...

  7. [转] Linux文件系统之hard link&symbol link

    这个图很清楚的表示出硬链接和软链接的方式. 1.硬链接: 基本定义:硬链接是有着相同inode号的仅文件名不同的文件(该文件名包含路径信息). 理解:如图,hard link和原始file通过同一个i ...

  8. python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数

    练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...

  9. Core Python Notes

    开发需要在读 Python 核心编程,一些 Point 记录如下. ******************************************** 版本相关 标准版的 Python 是用 C ...

  10. PHP 实现无限极栏目分类

    首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` va ...