初谈使用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那种既首字母大写又还要下划线连接的很二的命名风格格格不入.其实我看 ...
随机推荐
- Spring Boot 入门概念介绍
使用spring-boot快速开发spring应用 转 http://itindex.net/detail/49108-spring-boot-%E5%BC%80%E5%8F%91 spring多年以 ...
- JVM调优之jstack找出发生死锁的线程
1.执行死锁程序 2.执行 jstack -l 21733 | more 结果如下: 死锁程序: public static void main(String[] args) { // TODO Au ...
- 黑马程序猿_Java 代理机制学习总结
-------<a href="http://www.itheima.com/"">android培训</a>.<a href=" ...
- Android 网络技术HTTP
1.XML3种解析方式(DOM.SAX.PULL) 在网络上传输数据时最常用的格式有两种,XML 和JSON 这里首先明白什么是SAX是一个用于处理XML事件驱动的"推"模型,优点 ...
- NDN路由--OSPFN安装与配置
现在的IP网络的问题已经暴露的很多了,各种改进的网络架构与设想非常多,但其中以基于内容为中心的网络发展最为迅速,其中,NDN的架构最为完整,代码也比较成熟.OSPFN是基于CCNX的,所以之前要安装C ...
- URL重写:RewriteCond指令与RewriteRule 指令格式(转)
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等.本文将针对mod_rewrite和URL匹配的技术细 ...
- Java 8 Features – The ULTIMATE Guide--reference
Now, it is time to gather all the major Java 8 features under one reference post for your reading pl ...
- linux 之 yum 介绍 <转>
原文在这里 http://doophp.sinaapp.com/archives/linux/yum-setting-parameter.html 因为是程序员出身,平时虽然经常接触服务器,偶尔也会 ...
- C#解leetcode 11. Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...
- 移动Web开发技巧
META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...