我记得刚开始学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. poj 1458 Common Subsequence【LCS】

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 43132   Accepted: 17 ...

  2. 在asp.net中使用confirm可以分为两种:

    在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. ( ...

  3. Git git rebase 使用

      原文:http://gitbook.liuhui998.com/4_2.html 一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin ...

  4. NOI2003 文本编辑器

    练手QAQ #include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib& ...

  5. android——api

    一.1.复用首页做法—从Intent中获取”com.example.android.apis.Path”.根据这个结合PackageManger获得的Activities来展示不同等级的List界面( ...

  6. Android系统中设置TextView的行间距(非行高)

    Android系统中TextView默认显示中文时会比较紧凑,不是很美观.为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacin ...

  7. hdu3722Card Game(KM最大带权匹配)

    题目请戳这里 题目大意:给n个字符串,再给一个n的排列:p1,p2....pn.然后将第i个字符串贴到第pi个字符串后面,然后形成一个环.pi的首字符和第i个字符串的末尾字符就相邻,如果这2个字符相等 ...

  8. myeclipse 8.5反编译插件失效

    之前用的好好的,后来加了一个开发工作流的插件,今天打开之后发现反编译插件失效了,后来把开发工作流的插件删掉,又可以了,不知道撒原因,那位大神知道留下点痕迹吧

  9. linux查看cpu温度

      分类: linux系统 一.安装  sudo apt-get install lm-sensors   二.查看 linux@cdyemail:~$ sensors k10temp-pci-00c ...

  10. 从零开始学习jquery (一)

    一.jquery是什么 Jquery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safar ...