Spring不包含cglib依賴項,cglib和spring cglib都有Enhancer
類,一個是net.sf.cglib.proxy.Enhancer
,而另一個是org.springframework.cglib.proxy
,它們之間有什麼區別?Spring CGLIB和CGLIB有什麼區別?
6
A
回答
3
這就是所謂的重新包裝:而不是使用一些庫作爲依賴,一個項目使得依賴的副本,它在地方他們自己的項目的一部分,一個不同的包。
這樣做的原因是,使用Spring的項目可能想要使用cglib本身。如果Spring有特定版本的cglib作爲依賴項,那麼使用Spring選擇不同版本的項目是不可能的。但是,如果Spring使用不同包中的重新包裝的cglib,則不存在版本衝突,並且項目可以使用任何版本的cglib(如果他們喜歡)。
有些項目以類似的方式重新包裝Guava,Netty或其他流行的圖書館。
2
彈簧與重新包裝的cglib。您可以在Gradle buildfile中看到實際的cglib版本。搜索詞「CGLIB」,你會發現它:
// As of Spring 4.0.3, spring-core includes asm 5.x and repackages cglib 3.2, inlining
// both into the spring-core jar. cglib 3.2 itself depends on asm 5.x and is therefore
// further transformed by the JarJar task to depend on org.springframework.asm; this
// avoids including two different copies of asm unnecessarily.
def cglibVersion = "3.2.4"
2
,因爲它是在release notes of this version提到CGLIB被聯到春季爲3.2.0版本:
在以前的版本中,通過代理目標類Spring基於子類的AOP代理(如 的用戶=「true」)和@Configuration類支持是 需要聲明CGLIB 2.2的顯式依賴。自Spring Framework 3.2起,我們現在重新打包並內聯最新發布的CGLIB 3.0。
這意味着對於創建包含invokedynamic字節碼指令的 類型的子類代理的Java 7用戶而言,用戶的更大便利性以及正確的 功能。重新包裝 CGLIB內部確保與其他第三方 可能依賴於其他版本的CGLIB的框架沒有類路徑衝突。
這樣做是爲了提供與cglib相關聯的自動更新並避免版本衝突,因爲cglib somestimes會破壞其API。
相關問題
- 1. javaassist和cglib之間的區別
- 2. 什麼是Spring框架中的CGLIB?
- 3. Spring Transactional和CGLIB代理
- 4. 是NamedParameterJdbcTemplate和CGLIB在Spring AOP
- 5. Spring Cloud AWS cglib問題
- 6. 爲什麼我需要cglib(Spring AOP)有多個測試類?
- 7. 拳擊拆箱,cglib,spring和NoSuchMethodError神祕
- 8. Mockito-core 2.7.19和CGLIB
- 9. CGLib和序列號
- 10. 在Spring中,爲什麼POJO上CGLib的行號會丟失?
- 11. Java Web Start:unsigned cglib
- 12. cglib - MethodInterceptor&finalize?
- 13. CGLib Mixin示例
- 14. CGLIB代理接口
- 15. Spring Framework在JBoss上看不到cglib
- 16. 在Spring中配置接近bean aop + cglib
- 17. 不CGLIB修改類
- 18. CGLIB 3在Maven Central
- 19. 爲什麼混合的Spring AOP代理機制(CGLIB和JDKDynmic)不起作用
- 20. DAO和Spring Beans有什麼區別?
- 21. Spring BeanFactoryAware和ApplicationContextAware有什麼區別?
- 22. Spring-WS WebServiceTemplate:HttpUrlConnectionMessageSender和HttpComponentsMessageSender有什麼區別?
- 23. Spring和Spring.net有什麼區別嗎?
- 24. CGLIB,彈簧和注入構造函數
- 25. cglib編譯器jdk合規
- 26. CGLIB彈簧拋出IllegalAccessError
- 27. Easymock與@TestSubject增強與CGLIB
- 28. 在Spring中混合使用JDK和CGLIB代理
- 29. 使用@Transactional,Spring 2.5和cglib部署時的AbstractMethodError
- 30. 是否有Spring AOP重新包裝的CGLIB版本