在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中的反射非常緩慢,但現在不然。 –