初谈使用Spring的感受
我记得刚开始学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的感受的更多相关文章
- running programmer——spring-01(初谈spring)
今天主要是通过一个简单的登录程序学习一些spring做基础的配置和功能. I.spring的核心配置applicationContext.xml 关于bean的配置官方给出的最基础的配置文件如下: & ...
- 浅谈对Spring Framework的认识
Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...
- 浅谈使用spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
浅谈使用springsecurity中的BCryptPasswordEncoder方法对密码进行加密(encode)与密码匹配(matches) spring security中的BCryptPass ...
- 谈一下spring 的理解
spring,大家基本都在使用,两个核心: 声明式事务AOP : 控制反转依赖注入IOC: 以前对控制反转和依赖注入很模糊,现在大概理解了意思,控制反转,有spring容易来控制bean 的创建,我们 ...
- 谈下spring下的 aop日志记录
在我们开发当中 我们需要对系统用户行为和 系统异常信息有个统一记录 以便后期的 用户行为分析和bug修复 当我们有这个需求时 我们的通常采取方式很多 1.比如我们定义一个规范 开发一个接口 ...
- Spring 学习教程(一):浅谈对Spring IOC以及DI的理解
一.个人对IoC(控制反转)和DI(依赖注入)的理解我们平时在开发java web程序的时候,每个对象在需要使用它的合作对象时,自己都要将它要合作对象创建出来(比如 new 对象),这个合作对象是由自 ...
- DICOM医学图像处理:WEB PACS初谈
背景: 周末看到了一篇原公司同事的文章,讲的是关于新的互联网形势下的PACS系统.正好上一篇专栏文章也提到了有想搭建一个worklist服务器的冲动,所以就翻箱倒柜将原本学生时代做课题时搭建的简易We ...
- 初谈SQL Server逻辑读、物理读、预读
前言 本文涉及的内容均不是原创,是记录自己在学习IO.执行计划的过程中学习其他大牛的博客和心得并记录下来,之所以想写下来是为了记录自己在追溯的过程遇到的几个问题,并把这些问题弄清楚. 本章最后已贴出原 ...
- Yii2初谈
Yii2发布有两个月时间了,一直没有去仔细关注过. 今天在回顾PSR标准时,稍稍扫了一眼Yii2.它的命名风格还是一如既往的与Zend那种既首字母大写又还要下划线连接的很二的命名风格格格不入.其实我看 ...
随机推荐
- 病毒侵袭 - HDU 2896(AC自动机)
分析:有点需要注意的,输入的字符是所有可见的ASCII码,刚开始没看清一直以为是小写字母.............注意到这点后这题就是裸的自动机了. 代码如下: ================= ...
- Azkaban2配置过程
Azkaban2配置过程 azkaban2所需环境:jdk1.6.ant.jetty.hadoop.ssl证书 通过http://azkaban.github.io/azkaban2/download ...
- js 魔鬼训练
1.Object.assign 偷梁换柱 / 融合 - 将多个对象合并到第一个对象中去.这样一来methods对象中就包含着data对象了.否则this无法正常访问data中的title var ne ...
- Spring Boot 入门
Spring Boot自动配置 http://blog.javachen.com/2015/03/13/how-to-run-spring-boot-application.html http://b ...
- Struts2方法调用的三种方式
在Struts2中方法调用概括起来主要有三种形式 第一种方式:指定method属性 <action name="student" class="com.itmyho ...
- [Ruby] Ruby Variable Scope
Scope defines where in a program a variable is accessible. Ruby has four types of variable scope, lo ...
- [转] Java中的容器
在书写程序的时候,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中. 由于数据容器中存放了我们随时可能需要使用到的对象引用,所以一般的数据容器要都 ...
- iOS 如何优雅的处理“回调地狱Callback hell”(一) (下)
了解完流程之后,就可以开始继续研究源码了.在PromiseKit当中,最常用的当属then,thenInBackground,catch,finally - (PMKPromise *(^)(id)) ...
- C#中接口和抽象类
1抽象类 (1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法 (2) 抽象类不能被实例化 (3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明 ...
- SQL Server 存储过程分页
每每面试,总会有公司问到分页.在下不才,在这里写几种分页,望路过的各位大神尽情拍砖. 先从创建数据库说起.源码如下 一.创建数据库 /********************************* ...