反思与容器配置

时间:2015-10-19 14:50:59

标签: java

在Java中使用反射是非常昂贵的,因为它非常严重地影响性能。但我不知道,反射被广泛用于容器配置(web.xml),框架像Structs,REST ..和ORM一样,如hibernate等。 它是如何被证明的那样?是因为当容器启动或其他原因后反射只使用一次?

2 个答案:

答案 0 :(得分:0)

首先,我不会说使用反射会对代码性能产生如此不利的影响。当然,存在开销,但是存在优化技术,确保将性能影响保持在最低限度。就性能和可用性之间的权衡而言,应该考虑作为开发人员的产品的具体要求。例如,我是否会在移动设备上使用基于反射的重框架 - 我认为不是。它在后端是否有意义 - 我会说是的。

其次,基于注释的配置并不总是意味着在应用程序运行时使用了反射。有些框架使用AnnotationProcessor框架并在编译期间生成java代码,后来用作“普通代码”。此外,许多框架在运行时使用注释配置和字节码生成,因此基本上,反射保持在最低限度。

答案 1 :(得分:0)

  • 没有其他方法可以让他们做他们所做的事情(一个很好的例子就是Spring框架 - 在使用依赖注入时它不会强迫你使用任何接口,因为它没有接口到在编译时使用并且不知道你的类,唯一的方法是通过反射来检查它们。
  • 反射较重的部分不会(不应该)经常执行
  • 如果做得不对,反射并不 非常昂贵(例如,如果您只查找要调用一次的方法,然后缓存找到的java.lang.reflect.Method对象并将其用于进一步的调用)