在Java中使用反射非常昂贵,因为它影响性能非常糟糕。但我不知道,反射广泛用于容器配置(web.xml),框架的工作原理类似于Structs,REST ..和像休眠等ORM 它是如何被证明是正确的?它是因为反射只使用一次当容器启动或其他原因背后呢?反射与容器配置
Q
反射与容器配置
-2
A
回答
0
- 没有其他的方式让他们做他们做的事(一个很好的例子可能是Spring框架 - 它不会强制你在使用依赖注入时使用任何接口,并且因为它没有接口用,不知道你的类在编译的时候,唯一的办法就是通过反射来检查它们)
- 反射重部件不(应该)被过于频繁地
- 反射执行不说如果执行得当,代价非常昂贵(例如,如果您只查找一次想要调用的方法,然后缓存找到的对象
java.lang.reflect.Method
并在进一步的调用中使用它s)
0
首先,我不会说使用反射对代码的性能有这样的不利影响。当然,这是一个开销,但是有一些优化技术可以确保将性能影响降到最低。就性能和可用性之间的权衡而言,应考虑产品作为开发者的具体要求。例如,我会在移动设备上使用一个沉重的基于反射的框架 - 我想不是。它在后端是否有意义 - 我会说是。
其次,基于注释的配置并不总是意味着在应用程序运行时使用反射。有一些框架利用AnnotationProcessor
框架并在编译期间生成Java代码,稍后将其用作“普通代码”。另外,很多框架在运行时使用注释配置和字节代码生成,所以基本上反射保持在最低限度。
相关问题
- 1. 配置反射扫描测试类
- 2. 列表,反射,IEnumerable和配置问题
- 3. C + + Qt反射与复制和分配
- 4. 反射vs参考 - IoC容器注册
- 5. 获取容器类型使用反射
- 6. Webpack配置与反应
- 7. 与Java反射
- 8. 与反射
- 9. IoC容器配置
- 10. 自动映射器配置
- 11. Jackson对象映射器反序列化配置.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT
- 12. 反射与枚举
- 13. Spring MVC反射 - 调用Pojo设置器
- 14. 单反的.NET反射器
- 15. 使用Deplector与.NET反射器7
- 16. 配置港口范围映射到containers.yaml谷歌容器引擎
- 17. 反射类型不匹配
- 18. 欺骗反射器
- 19. Unity容器配置问题
- 20. Kubernetes配置链接容器
- 21. 从容器配置@EntityListeners
- 22. 容器不反映MediaReader设置
- 23. 测试与酶反应容器
- 24. 拦截器用于与Java配置不存在请求映射
- 25. 使用不同配置与简单注射器
- 26. 何处放置IoC容器配置?
- 27. 控制容器与“一个通用”容器的多次反转
- 28. 与Java注释和反射
- 29. IList与反射的EntityCollection
- 30. 与清理通过反射
这是有道理的,因为在这些框架中没有其他替代方案。 – JonK
我想这也会回答你的一些音乐会:http://programmers.stackexchange.com/a/123959 –
*“因为它影响性能非常糟糕”* - 不正确。曾经有一段时间Java中的反射非常缓慢,但现在不然。 –