论坛首页 入门技术论坛

SPRING的AOP不适合多线程应用?

浏览 14603 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-10-14  

引用
这个是讨论的重点.
不是被代理对像,也不考虑程序员造成的安全问题.AOP框架本身不是线程序安全的.

我直接就google了,找到一篇分析http://blog.pramatiservices.com/spring-bean-creation-is-not-thread-safe/
文中讨论了在并发环境下,得到未完全初始化的单例bean的bug。

引用
性能问题,我估计你用的不是普通对相,如果是普通对像会应该差距这么小,普通对像应该是ArrayList的那种,String,无状态简单BEAN。这样的话性能相差至少是50倍吧。一会测下就行了。
仅仅创建的性能差距还不是全部,还有运行时执行aop框架对象的消耗时间,这个时间都要累加到CPU上面,所以各种因素加在一起影响就大了。

确实,代码里有一行new Date()导致,50倍基本一致。cglib的方式不知道性能怎样(我看一些例子的代码是可以先构建出proxy class,然后才创建实例)。这个累积效应,关键是不好量化。

0 请登录后投票
   发表时间:2008-10-14  
支持tom猫,我也是来砸spring的。

我所理解的spring是相当低效率和无价值的,在我所经历和见到的spring项目中成功的少,垃圾的多。

一方面spring所倡导的概念仅仅是概念,缺乏实用性。小项目中太复杂,大项目用不上。使用spring之后,项目或产品的系统运维很麻烦,带来的好处倒是没觉得。

程序运行效率很重要,不可能因为机器便宜就可以盲目增加机器,一方面电力成本的问题,另一方面运维难度。

spring绝佳之处就在于概念,作为技术吹水的材料,spring是很适合的。
0 请登录后投票
   发表时间:2008-10-14  
再砸一下struts

如果说在所谓的企业应用中,这玩意有一席之地,在互联网应用中,完全是个垃圾。

1.效率问题。随便出个错,你可以发现struts相关的堆栈输出至少20条,这玩意还有效率可言么?

2.我为什么要统一配置页面转发和定向?直接在页面中定向页面转发和配置不是更有灵活性。在大系统中,约定规则不是更方便?

顺便砸taglib,除了降低系统效率之外,没有看出来其他用处。从某种程度上来说,采用mvc的思想,直接在页面中用java代码输出会易于编写和维护。
0 请登录后投票
   发表时间:2008-10-14  
nihongye 写道


我直接就google了,找到一篇分析[url]http://blog.pramatiservices.com/spring-bean-creation-is-not-thread-safe

文中讨论了在并发环境下,得到未完全初始化的单例bean的bug。


上面说Spring2.0是有BUG的,但2.5已经修复了IOC的BUG。

不仅仅如此2.5的AOP也是非线程安全的。这不是BUG,这个是改变不了的。源代码只能那么实现了。
0 请登录后投票
   发表时间:2008-10-14  
举个实际的代码例子来说明你遇到的问题吧,我认为AOP的线程安全是个伪命题
0 请登录后投票
   发表时间:2008-10-14  
首先的问题~~AOP是面向切面编程,而线程安全的问题是应该由切面本身去考虑的~~你不能因为某人用枪杀了人,就否定枪的作用。没有任何编程结构可以包办所有事情。
0 请登录后投票
   发表时间:2008-10-14  
axeon 写道
支持tom猫,我也是来砸spring的。
我所理解的spring是相当低效率和无价值的,在我所经历和见到的spring项目中成功的少,垃圾的多。

相反,我见到的Spring成功项目很多~~但是垃圾的项目一向比不垃圾的项目多,这个跟Spring没什么关系。还有Spring低效率和无价值,可以理解为语不惊人死不休吗~~

引用
一方面spring所倡导的概念仅仅是概念,缺乏实用性。小项目中太复杂,大项目用不上。使用spring之后,项目或产品的系统运维很麻烦,带来的好处倒是没觉得。


只能说你不太适合使用Spring。

引用
程序运行效率很重要,不可能因为机器便宜就可以盲目增加机器,一方面电力成本的问题,另一方面运维难度。


效率可以用数据说话吗,Spring2.5的运行效率相当快速,不知道你所要求的效率指标是多少。

引用

spring绝佳之处就在于概念,作为技术吹水的材料,spring是很适合的。


Spring都拿来技术吹水,那也真是没什么可以吹的了。。。
0 请登录后投票
   发表时间:2008-10-14  
嗯,我是想提醒大家用的时候注意pototype
0 请登录后投票
   发表时间:2008-10-14  
大猫汤姆 写道
nihongye 写道


我直接就google了,找到一篇分析[url]http://blog.pramatiservices.com/spring-bean-creation-is-not-thread-safe

文中讨论了在并发环境下,得到未完全初始化的单例bean的bug。


上面说Spring2.0是有BUG的,但2.5已经修复了IOC的BUG。

不仅仅如此2.5的AOP也是非线程安全的。这不是BUG,这个是改变不了的。源代码只能那么实现了。

你没仔细看,说的是2.5有问题,2.0没问题。aop那块就不清楚了,你清楚的话,开贴另外讨论!?。
0 请登录后投票
   发表时间:2008-10-14  
大猫汤姆 写道
嗯,我是想提醒大家用的时候注意pototype

这个好像不好弄。
0 请登录后投票
论坛首页 入门技术版

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