Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 反射与容器配置_Java - Fatal编程技术网

Java 反射与容器配置

Java 反射与容器配置,java,Java,在Java中使用反射非常昂贵,因为它会严重影响性能。但我想知道,反射广泛用于容器配置web.xml,框架的工作方式类似于结构,REST,还有像冬眠之类的ORM。 如何证明这一点?是因为容器启动时反射只使用了一次,还是它背后的其他原因?首先,我不会说使用反射对代码性能有如此有害的影响。当然,这是一种开销,但也有一些优化技术,可以确保性能影响保持在最低限度。就性能和可用性之间的权衡而言,应该考虑开发人员对产品的具体要求。例如,我会在手机上使用基于重反射的框架吗?我想不会。它在后端有意义吗?我会说是的

在Java中使用反射非常昂贵,因为它会严重影响性能。但我想知道,反射广泛用于容器配置web.xml,框架的工作方式类似于结构,REST,还有像冬眠之类的ORM。
如何证明这一点?是因为容器启动时反射只使用了一次,还是它背后的其他原因?

首先,我不会说使用反射对代码性能有如此有害的影响。当然,这是一种开销,但也有一些优化技术,可以确保性能影响保持在最低限度。就性能和可用性之间的权衡而言,应该考虑开发人员对产品的具体要求。例如,我会在手机上使用基于重反射的框架吗?我想不会。它在后端有意义吗?我会说是的

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

对于他们来说,没有其他方法可以做到这一点——Spring框架就是一个很好的例子——在使用依赖项注入时,它不会强迫您使用任何接口,而且因为它没有接口可使用,在编译时也不知道您的类,所以唯一的方法是通过反射来检查它们 反射重的部分不应执行得太频繁 如果做得正确,反射的成本不会太高,例如,如果只查找一次要调用的方法,然后缓存找到的java.lang.reflect.method对象,并在以后的调用中使用它
这基本上是合理的,因为对于这类框架,没有真正的替代方案。我认为这也能回答你的一些问题:因为它严重影响性能,对不对。曾经有一段时间Java中的反射非常慢,现在却不是。