浏览 6645 次
锁定老帖子 主题:关于Spring我有一些地方不太明白
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-09-16
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-09-16
我也有一点疑问,借这个机会说出来。
关于Spring所推荐的AOP声明事务 我觉得事务是一个BO执行一个操作的完整语义的一部分 即使使用AOP分离出来,这个对象还是要假设自己是处于一个事务中的呀,那么代码自然也是基于处于一个事务中这个假设的。 事务被分离出去虽然可能灵活了,可是如果不同时参照相应的xml,可能会对理解代码造成影响吧 我觉得声明式事务应该只使用元数据声明,这样才能保证完整的语义。 |
|
返回顶楼 | |
发表时间:2004-09-16
bean.xml只是对你的对象进行配置的描述文件,它本身对代码没有影响。
你的代码可以完全不改动的移植到另一个Ioc容器中。 因此至少不能算通常意义上的侵入(比如要求实现接口,或者要求继承) 当然,如果认为编写配置文件也算是很复杂的工作的话。 因为配置文件通常是不具有通用性的,所以这个可以看作是附加的代价。 配置文件应该不会影响你的设计与架构,所以我还是觉得这个不能算侵入。 至于那些template,可以看作是spring提供的平台相关api。 因为它不要求你一定要使用,所以不能算作侵入。 至于你使用了,那么你要为自己使用这些api的目的负责。 因为是你自己可以选择的,所以不算侵入性的东西。 |
|
返回顶楼 | |
发表时间:2004-09-16
blackhost 写道 另外,加入他提供的Template,MVC框架你都不采用,那实际上你只用到了它的Bean factory,而目前很多项目中已经或多或少的使用了Spring的这种思想(Ioc注入依赖),只不过它并没有做的很彻底,那移植到Spring上还有什么意义呢?只要愿意,没个人都可以做一个IOC容器来做这些. 我觉得spring中IoC容器是关键,其他的应该是为了开发方便吧 在java这种需要静态接口的语言中,即使是侵入性最小的Ioc也需要一个接口。 问题是,只要用别人的接口就已经是一种依赖了。 除非这个接口是中立的规范。 或者这个接口是你写的。 Spring的意义在于它对你的大部分对象都不侵入。 而那少部分使用了spring专有性质的对象都可以因为开发效率的提高而很容易的实现。 这样实现了较好的移植性和开发效率的平衡。 想要使用一个框架的便利特性,又要无需修改的跨框架移植性是不现实的。 |
|
返回顶楼 | |
发表时间:2004-09-16
我也觉得配置文件本身就是一种带有侵入性的东西,只是侵入性降低了。Spring提供的template,本不应该归属于它的IOC容器,它是利用IOC对其他框架的封装,可以看作是IOC的一种应用。用了那些template而离不开Spring也没什么值得非议的。
从一个IOC容器移植到另一个IOC容器是需要修改配置文件的,因为现在并没有一个针对IOC容器的标准。web.xml是有标准的,所以你可以轻易的从一个servlet容器移植到另一个servlet容器。 |
|
返回顶楼 | |
发表时间:2004-09-16
但你不能把servlet当一个Java Bean直接new出来用。这就是取舍。
|
|
返回顶楼 | |
发表时间:2004-09-17
其实就是一个单向依赖问题。
容器依赖组件是必然的。在配置文件中配置组件的各个class也是不可避免的。 但是,只要容器不要求组件依赖容器就是没有侵入。 从这点上,我说容器要求组件必须公开构造函数也是一个侵入。 只要你的组件代码保持对容器的百分之百无知,保证即使没有容器也可以被手工写的组装代码组装,就可以了。 厌倦发呆说的很好。首先配置文件不算侵入性。其次,如果你配置文件里面东西太多很可能设计得有问题,把不该放在配置文件中的东西也扔了进来。 最后,容器间迁移完全可能做一些自动工具来转换配置文件的。 |
|
返回顶楼 | |
发表时间:2004-09-17
blackhost 写道 另外,加入他提供的Template,MVC框架你都不采用,那实际上你只用到了它的Bean factory,而目前很多项目中已经或多或少的使用了Spring的这种思想(Ioc注入依赖),只不过它并没有做的很彻底,那移植到Spring上还有什么意义呢?只要愿意,没个人都可以做一个IOC容器来做这些. 其实你使用了那些Template又如何呢? 其实就像你使用log4j一样。 如果你要移植到别的容器里面,带着spring.jar好了 反正也多占用不了多大的硬盘空间的说。 |
|
返回顶楼 | |