Spring框架支持使用Groovy等动态语言。
由于Groovy现在可以进行静态编译,据我所知,groovy类应该具有与Java类相似的性能。
例如,如果我通过导入类文件或使用lang:groovy元素在Groovy中编写spring bean,如:
<lang:groovy id="myBean" script-source="classpath:mypackage/MyClass.groovy" />
或内联定义,如:
<lang:groovy id="myBean">
<lang:inline-script>
package mypackage
class MyClass {
String helloWorld() { "Hello World" }
}
</lang:inline-script>
</lang:groovy>
我的问题是,与仅使用java类相比,这是否会影响应用程序的性能,我也想知道使用不同于像singleton,session,request这样的单例的bean时会出现问题。
有没有人使用这种方法开发Spring应用程序?我的意思是现实世界的专业项目。
答案 0 :(得分:5)
Java倾向于做一些惊人的优化 - 这些天我确信它确实会导致性能命中的框架不会显着改变大多数应用程序的性能。
春天适合这个。如果你在使用Spring时看到堆栈转储,你会看到方法调用之间经常注入大约10帧。每当spring必须拦截你的代码时,它会做很多工作!事实上,Java是如此之快,即使它可能会使你的方法调用减慢100倍,谁在乎呢?它仍然比你需要的速度快1000倍。
另一件事 - 静态编译groovy可能非常快,但如果你真的在乎,请注意,因为如果你陷入groovy库,你可能会花费比你想象的更长的时间。
总的来说,最重要的是要记住的是第一位评论者所说的所有邪恶的根源。
预先注意表现几乎没有意义。即使您知道自己会遇到性能问题,也可以将其编码为可读,然后对其进行分析并返回并转换结果太慢的地方。