読者です 読者をやめる 読者になる 読者になる

この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

spring-asm-3.2.0は何処へ行った?

Spring

SpringFramework-3.2.0がリリースされてました。
というわけでサッソク依存関係を解決してみたのですが…


spring-asm-3.2.0.jarがどこにも無い。


maven centralどころか、SpringFramework公式リポジトリにも無い。何故…?


というわけで、埒があかないのでChangeLogを見たんです。ChangeLog
http://static.springsource.org/spring/docs/3.2.x/changelog.txt


そしたらこういうことが書いてあるわけですよ。

Changes in version 3.2 M2 (2012-09-11)
--------------------------------------

*1355841086* inlined ASM 4.0 into spring-core, removed spring-asm subproject and jar (SPR-9669)
*1355841087* inlined CGLIB 3.0 into spring-core, eliminating external dependency (SPR-9669)
...


えーマジっすか。いいんだろうかそれ…

と思ったら、

ははあ、現在主流のcglib-2.2系とバッティングするわけですな、これ。
cglib3はASM4をベースにしており、旧世代のcglib2(ASM3がベース)とはバイナリ互換性がありません。


だから仕方なく、ソース丸パクリでspring-coreに全部突っ込んだ模様です。
詳しくはこちら。
https://jira.springsource.org/browse/SPR-9669


というわけで

僕も、コレまで使っていたcglib2とおさらばして

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;


こんにちはcglib3、ということになりました。

import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;


JUnitテストを動かした限りでは、特に問題なく動作している模様です。


おおっと!

xworkはasm3系をモロ使ってるので、struts2ユーザーはasm.jarへの依存関係を残す必要があるようです。