前几天收拾东西。首先我想把床上的多余的东西移开,放到桌子上。但是桌子上的东西太多了,我得先把桌子上的东西挪一挪。我看到了有个箱子,我想先把桌子上的东西放到箱子里。但打开箱子,箱子里的又是装满了东西。所以,我得先整理下箱子。
于是我想到了Spring。我想,要是有Spring多好啊,当我需要什么的时候,它就给我准备好了,不用我自己去准备了。是的,这就是Spring依赖注入所做的事情。就像炒菜,没有Spring来管理依赖,你得自己买油盐。而有了Spring,你炒菜时吼一吼:“我要油”,油便有了。神说要有油,于是就有了油。
这样的依赖让我们的关注更加集中,干的事情更加单一。 Spring出生之前,人们通过工厂,但那里还不是自动注入。Struts有了自动注入的影子。
注解似乎会成了一种主宰。Java 5对注释的支持有了突破性的增强。越来越多的第三方框架也有了支持注解的版本,如单元测试,如Spring.
之前,我对Spring的注解是持反对态度的,并且个人坚决不用。当时觉得这是与Spring精神相违背的。Spring提倡的是针对接口编程。如果我们想知道对于某个接口,程序中使用的是哪一个实现类,那么,我们只要去Spring的配置文件里找就是了。比如说有一个IUserDAO接口, 在配置文件中我们也许会这样配置:
<bean id=”userDAO” class=”xx.xx.UserDAOJDBC”/>
在这里,我们一目了然的知道用到了这个接口的哪个实现类。如果使用的是注解,我们在UserDAOJDBC类前面加上注解,表明这是一个id为userDAO的bean,那么, 我们要查找的时候,在eclipse中,我们也许得使用Ctrl+H快捷键了。这就带来了查找上的麻烦。还要考虑一种情况。如果这个IUserDAO有两个实现类,一个是UserDAOJDBC, 一个是UserDAOHibernate。这种情况的存在是不令人惊讶的。也许项目刚开始用的是Hiberante, 但后来客户提出了对性能的更高的要求,而所要求的性能已超出hibernate的极限了,那这个时候,就是用jdbc了.又或者,某个公司做了一套产品,卖给不同的客户,不同客户对数据库的要求不一样,所以事先写好两个IUserDAO的实现类,针对不同客户的要求,选择不同的实现,而不用再进行二次开发。这个时候,注解的另一缺点就暴露出来了:不便于修改。
就上面的情况而言,IUserDAO接口有两个实现类, 如果用注释,想要切换实现时,必须得修改源代码。而如果采用配置文件的方式,则只要改配置文件就行了。修改代码的就高境界就是不改代码。
对于查找的问题,spring的另一个提倡观点也算是针对这个缺点的补充:惯例优先。例如对于一个服务, IuserService, 如果有了一套自己的命名惯例,那么,我们就可以直接Ctrl+Shift+T查找这个接口的实现了,比如是UserServiceImpl.java。
注解带来的是开发时的方便。一阴一阳谓之道,开发方便是以牺牲维护的方便作为代价的。开发方便的必然维护麻烦;开发麻烦的必然维护方便。
理论与实际总是有那么些差距。在实际中,我们很少遇到像上面所述的客户要求更改持久层实现的情况。就算有,也许也是三五年之后的事情了。对于那种发生概率很小的事情,我们没必要花太多精力去关注它。我们不会因为火山有可能喷发就不在山脚下住人,我们也不会因为2012有万分之一的可能到来就提前做准备。与其为了一个三五年之后才会发生的维护而在一年的开发时间内都忍受烦琐的配置文件煎熬,还不如无视它进行痛痛快快地开发。
从对Spring注解的抵制到支持的转变,是因为我曾经历过的一个项目。这个项目换过数据库。前期是mysql, 后来改用oracle.我的态度的转变不单是因为这样,还一个就是项目中的国际化。这个项目起初始是用到了国际化的。国际化给开发带来的困难是显而易见的。页面中到处都充斥着诸如user.submit之类的字符,没一个中文。第一,我不敢恭维国人的英语阅读水平;第二,我不敢恭维国人的英语写作水平。所以,有时候,会了知道这个按钮上的是什么文字,开发时还得去找资源文件。后来干掉了国际化,因为考虑到在五年之内,这个项目一不可能跨国二不可能跨洲三不可能跨星球,与其开发如此麻烦,还不如等N年之后要用到国际化时再改。
说到英语读写水平,再扯几句。在《重构:改善既有代码的设计》一书中,作者提倡我们用方法名来消灭注释的存在。有时蛋疼的是,你方法名已经等同于注释的作用了,你还得写注释。举个夸张的例子,有一个方法,方法名叫saveUserInfo(), 完全可以不写注释的,但有人就说:你这个方法是什么意思呀?怎么注释都不写。这不怪人,只怪在于语言的差异。要恨就恨外国人而不是中国人先发明了编程。如果是中国人先发明了编程, 那这个方法名我们就可以写成:保存用户信息()。不用写注释,咱国人都看得懂。哈哈,这时候就得轮到外国人写注释了:/* save user’s information */。
分享到:
相关推荐
很抱歉,根据您提供的信息,"整理房间练习题及答案北师大版精选.doc"似乎是一个与教育或学习材料相关的文档,特别是针对儿童的分类和认知能力培养。然而,这个主题并不符合我作为专业IT行业大师的身份,我的专长在于...
因此,【整理房间PPT课件】作为一个面向儿童的专业教育资料,不仅专注于教授孩子们如何整理个人空间,还通过一系列的互动活动,帮助他们理解整理房间的深层含义,锻炼他们的认知能力和注意力,培养他们的分类、排序...
北师大一年级数学上册整理房间PPT教案.pptx
一年级数学上册 四 分类 第1课时 整理房间作业课件 北师大版.ppt
《整理房间》:一年级生活实践课程的启示 在这个快速发展的信息时代,人们的生活节奏不断加快,而生活技能的培养往往被忽视。然而,对于孩子们来说,从小就学会整理房间,培养独立自主的生活习惯和良好的空间管理...
《整理房间》PPT课件.ppt
标题中的"2014新北师大版小学数学一年级上册整理房间PPT.ppt"指的是一个教育材料,主要用于教授小学一年级的学生关于数学和生活整理的初步概念。这个PPT可能包含了一系列与数学相关的生活场景,以"整理房间"为主题,...
《分类——整理房间》教学设计是一年级上册第四单元第一节的内容,主要目的是引导学生经历分类的过程,学习按照一定的标准或自定义的标准进行分类,并在实际操作中培养良好的整理习惯,感受数学在日常生活中的应用。...
### 一年级数学上册 4 分类 4.1 整理房间教学反思素材 北师大版 #### 一、教学目标与设计理念 在本节课的教学设计中,主要目标是通过“整理房间”的实践活动来引入分类的概念。通过这样的实践活动,不仅能够让学生...
一年级数学整理房间PPT学习教案.pptx
在新北师大版一年级数学上册中,《整理房间》一课以一种生动、直观的方式向学生们介绍了分类和整理的基础概念,这是一次有意义的教学尝试。数学作为一门严谨的学科,其基础概念的理解对于低年级学生来说至关重要。...
教案劳动与技术(整理房间).doc
北师大版小学数学一年级上册“整理房间”一课便是一个典型的例子,它以孩子们熟悉的整理房间活动为背景,借助生动有趣的PPT教案,引导学生在实际操作中学习分类、比较以及简单的逻辑思维。 首先,课程以“让我来...
一年级数学上册整理房间分类PPT课件.pptx
为此,"学校一班级上册数学整理房间教案最新模板"应运而生,其目的在于通过一个贴近学生生活的主题——整理房间,来教授数学中的分类概念,同时培养孩子们的条理性思维、生活能力和团队协作精神。 在这一教案中,...
标题中的“我整理小房间作文”表明这是一篇关于作者自己清理个人空间的文章,而描述中的内容证实了这一点。这篇文章可以被归类为“范文”,意味着它可能被用于教育环境中,作为学生写作的示例或参考。从文章的片段中...
整理房间游戏flash动画是一款幼儿游戏动画课件下载。
这篇文档标题为“数学教案-整理房间-教学教案”,描述中提到的是一个数学教学教案,主要目的是教授分类的概念。文档标签为“事业编”,可能表明这是针对教育工作者,尤其是公立学校教师的教育资源。 1. **分类...
一年级数学上册整理房间分类PPT学习教案.pptx