Spring使用中需要注意的地方

原创 2006年06月19日 09:41:00

最近再一次阅读了一些Spring的资料,对Spring有了一些新的认识。回想自己曾经写过的一些Spring相关的程序片断偶有所得,于是记下了一些心得。

 

使用Spring时注意得几点:

 

第一,   不要迷信

Spring项目的创始人(我们伟大的……你打我干什么?不打你才怪,不是说不能迷信吗?)也认为设计的优秀要远远重要于使用的技术。所以不要认为选择了Spring就能够保证我们的系统拥有金刚不坏体。可是国内却往往把使用了某某先进技术作为招牌来用,我从来不认为使用了好的技术的项目本身就一定会是成功的。

第二,   因题施法

对于具体的情况使用不同的解决办法。Spring对于一个从无到有的项目来说绝对是一个不错的选择,但是对于一个已经存在了数据结构或者陈旧代码的项目来说中途把它加进来能够起到的作用有限。

往往与Spring同时使用的还有HibernateStruts这两个家伙。Struts暂且不提,毕竟人家fans多,我怕死。Hibernate这个东西也是被很多人捧的上天的家伙,可是这个玩意不是万能的。Hibernate近乎完美的封装了底层数据同步的操作,在开发上可以为我们节省太多的时间。但是完美本身就是缺点,Hibernate完美是有代价的,它为了完美付出的最大代价就是“性能”。不信的Hibernate拥护者可以自己作个测试看看,它封装之后的操作要比JDBC编程方式下慢多少倍。封装完美就无法对于SQL语句优化,如果你的数据库是一个已有的,那么使用Hibernate只会给你带来无穷无尽的麻烦。

所以使用之前考虑好你的系统的复杂程度,如果你的系统十分简单,没有那么多相互依赖的bean的话,我们无须使用Spring

第三,   尽量使用set方法的注入模式

我见过很多的Spring相关的代码,发祥对于BeanFactory的使用方式基本分为两种,一种是获取了BeanFactory实例然后生成需要的bean;另外一种是使用set方法的注入实现。

我奇怪的发现很多人喜欢获得BeanFactory实例然后再生成需要的实例,我觉得这样做已经违背了Spring的使用原则——尽量减少模块之间的依赖关系。因此我觉得使用set方法的注入模式才是正确的选择,至少这样的代码看起来要更加优雅。

第四,   慎重的选择SpringMVC作为表现层

Spring是个好东西,但是并不代表它全部适合你。至少我觉得SpringMVC就不适合绝大多数情况,SpringMVC十分优雅,但是它的优雅有些过分了。就像一个过分注重理论并且有着极高的学术地位的专家,这样的专家并不一定会是一个能够创造出很多价值的程序高手。

SpringMVC的学习代价高,使用起来虽然功能强大,但是却无法熟练的应用。所以我一般不会选择使用这样一个过分注重设计的东西,设计要适当不要过渡。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

创建一个Spring+SpringMVC+MyBatis+MySql+Maven项目需要注意的地方

1.pom.xml文件是Maven导入jar包的配置地方 org.slf4j slf4j-log4j12 1.7.5 2.在spring-mvcxml与spring.xml文件中配置注解...

Spring的@Autowired需要注意的地方

在官方文档2.5版本上写着Autowired是根据类型注入的,网上搜索也是说Autowired默认是按照类型注入的,而Resource才是默认按照名字注入的,但是后来发现不是这样的,Autowired...

使用nusoap时需要注意的地方

原来做web service用的是pear的soap包, 最近改成用nusoap了, 所以对nusoap也算比较熟悉了.在用的过程中发现有些地方需要注意一下, 所以本文不说nusoap的使用方法, 只...

C++使用localtime函数需要注意的地方

在处理时间时用到了localtime这个函数,将一个UTC时间转为本地时间: [cpp] #include time_t tmNow = time(NULL); tm *ptmNow = local...

Flex中使用全屏设置和需要注意的地方

Flex中如果使用this.stage.displayState = StageDisplayState.FULL_SCREEN; 来设置全屏,需要设置html中的属性,缺点是如果界面中含有输入框时...

关于在使用parseInt进行日期判断需要注意的地方

今日,在做一个关于日期判断的一个小函数,是用javascript做的,发现一个BUg,代码如下: function checkDate(arg_intYear,arg_intMonth,arg_in...

Activity启动模式以及在使用时需要注意的地方

Activity的启动模式 standard,singleTop,singleTask,singleInstance,每种模式的特点    (1) standard (默认是标准的) a) 每次启动A...

使用auto_ptr需要注意的地方

转自:http://hi.baidu.com/aidyhua/blog/item/9f739ff8b53d8353252df2c4.html a. auto_ptr定义于头文件memory中; ...

javascript读书笔记2----使用原型进行扩展的一个需要注意的地方

在javascript中可以使用原型来达到继承的效果 如下代码 function People() { this.name = 'people'; } function Stu...

java二维数组的使用需要注意的地方

如下所示的代码,如果按照C语言来说则第二次输出时只应该是数组的第一行全为零,可是事实上我们却会看到第一行和第二行都为0: 代码: public class Test3 { public s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)