论坛首页 Java企业应用论坛

关于Spring我有一些地方不太明白

浏览 6645 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-09-16  
Spring宣称自己是个高度无侵入的框架,无须Spring的引入专用类,即可使用Spring容器管理,但是如何解释其配置文件的规范,如果不按照Spring的规范书写bean.xml,你就无法在Spring中按照Spring的思想管理这些bean,这算不算是一种侵入性,更不用说它提供的一大堆template了,如果用了就更离不开Spring框架的支持了,不知道我的理解有没有什么错误?我刚开始研究Spring
   发表时间:2004-09-16  
我也有一点疑问,借这个机会说出来。

关于Spring所推荐的AOP声明事务
我觉得事务是一个BO执行一个操作的完整语义的一部分
即使使用AOP分离出来,这个对象还是要假设自己是处于一个事务中的呀,那么代码自然也是基于处于一个事务中这个假设的。
事务被分离出去虽然可能灵活了,可是如果不同时参照相应的xml,可能会对理解代码造成影响吧
我觉得声明式事务应该只使用元数据声明,这样才能保证完整的语义。
0 请登录后投票
   发表时间:2004-09-16  
bean.xml只是对你的对象进行配置的描述文件,它本身对代码没有影响。
你的代码可以完全不改动的移植到另一个Ioc容器中。
因此至少不能算通常意义上的侵入(比如要求实现接口,或者要求继承)

当然,如果认为编写配置文件也算是很复杂的工作的话。
因为配置文件通常是不具有通用性的,所以这个可以看作是附加的代价。
配置文件应该不会影响你的设计与架构,所以我还是觉得这个不能算侵入。

至于那些template,可以看作是spring提供的平台相关api。
因为它不要求你一定要使用,所以不能算作侵入。
至于你使用了,那么你要为自己使用这些api的目的负责。
因为是你自己可以选择的,所以不算侵入性的东西。
0 请登录后投票
   发表时间:2004-09-16  
blackhost 写道

另外,加入他提供的Template,MVC框架你都不采用,那实际上你只用到了它的Bean factory,而目前很多项目中已经或多或少的使用了Spring的这种思想(Ioc注入依赖),只不过它并没有做的很彻底,那移植到Spring上还有什么意义呢?只要愿意,没个人都可以做一个IOC容器来做这些.


我觉得spring中IoC容器是关键,其他的应该是为了开发方便吧
在java这种需要静态接口的语言中,即使是侵入性最小的Ioc也需要一个接口。
问题是,只要用别人的接口就已经是一种依赖了。
除非这个接口是中立的规范。
或者这个接口是你写的。
Spring的意义在于它对你的大部分对象都不侵入。
而那少部分使用了spring专有性质的对象都可以因为开发效率的提高而很容易的实现。
这样实现了较好的移植性和开发效率的平衡。
想要使用一个框架的便利特性,又要无需修改的跨框架移植性是不现实的。
0 请登录后投票
   发表时间:2004-09-16  
我也觉得配置文件本身就是一种带有侵入性的东西,只是侵入性降低了。Spring提供的template,本不应该归属于它的IOC容器,它是利用IOC对其他框架的封装,可以看作是IOC的一种应用。用了那些template而离不开Spring也没什么值得非议的。
从一个IOC容器移植到另一个IOC容器是需要修改配置文件的,因为现在并没有一个针对IOC容器的标准。web.xml是有标准的,所以你可以轻易的从一个servlet容器移植到另一个servlet容器。
0 请登录后投票
   发表时间:2004-09-16  
但你不能把servlet当一个Java Bean直接new出来用。这就是取舍。
0 请登录后投票
   发表时间:2004-09-17  
其实就是一个单向依赖问题。

容器依赖组件是必然的。在配置文件中配置组件的各个class也是不可避免的。

但是,只要容器不要求组件依赖容器就是没有侵入。
从这点上,我说容器要求组件必须公开构造函数也是一个侵入。

只要你的组件代码保持对容器的百分之百无知,保证即使没有容器也可以被手工写的组装代码组装,就可以了。

厌倦发呆说的很好。首先配置文件不算侵入性。其次,如果你配置文件里面东西太多很可能设计得有问题,把不该放在配置文件中的东西也扔了进来。
最后,容器间迁移完全可能做一些自动工具来转换配置文件的。
0 请登录后投票
   发表时间:2004-09-17  
blackhost 写道

另外,加入他提供的Template,MVC框架你都不采用,那实际上你只用到了它的Bean factory,而目前很多项目中已经或多或少的使用了Spring的这种思想(Ioc注入依赖),只不过它并没有做的很彻底,那移植到Spring上还有什么意义呢?只要愿意,没个人都可以做一个IOC容器来做这些.

其实你使用了那些Template又如何呢?
其实就像你使用log4j一样。
如果你要移植到别的容器里面,带着spring.jar好了
反正也多占用不了多大的硬盘空间的说。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics