ひよっこ。

I want to…

Posts Tagged ‘aop’

Spring3の宣言的トランザクションが効かなくて焦るなど

Posted by hikaruworld : 2011 1月 26

原因は2つ.

<tx:annotation-driven/>の設定もれとrollback-forの設定漏れ。

<tx:annotation-driven/>に関して

@Transactionalによるアノテーションベースのトランザクション管理をする場合は、
設定ファイル上でこの設定を行う必要がある。
勘違いしたのは、mvc側のannotation-drivenと勘違いしたこと。

http://www.springframework.org/schema/mvcの設定と
http://www.springframework.org/schema/txは全く別物なので注意。

rollback-for

デフォルトでSpringのトランザクション管理をしている場合に例外が発生して、
rollbackされるのは、実行時例外だけ(つまりRuntimeExceptionを継承するクラス)。

つまり、トランザクション内で任意の例外クラスを実装していてtry…catchを強制させたいような
コードを書いている場合は、そのエラーが発生してもロールバックしてくれない。
Exceptionが発生した場合に問答無用でロールバックしたい場合はrollback-for=”java.lang.Exception”
あたりを設定しておく必要がある。

前者は自分の勘違いだから仕方がないとしても、後者の設定はちょっといやだなぁ…

Posted in program | タグ: , , | Leave a Comment »

Spring3でaopの設定をしたらCGLIB2エラーになった

Posted by hikaruworld : 2010 12月 8

Spring3でSessionレベルのデータを管理したくて、以下のようなaopの設定をしたら、

<aop:scoped-proxy/>

こんなエラーが出ちゃいました。


Caused by: org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.

エラーログにあるように、CGLIB2がないためなんですが、
mvn上でspring-aopの依存関係になってるんじゃないの?と思ってググってみたら、
依存関係はoptionalでした。あらま。

というわけで、リポジトリにhttp://repo1.maven.org/maven2/cglib/cglib/2.2/
を追加して、依存関係でpom.xmlにCGLIB2を追加

    <!-- AOP dependency -->
    <dependency>
    	<groupId>cglib</groupId>
	<artifactId>cglib</artifactId>
	<version>2.2</version>
    </dependency>

で、mvn install して起動したら無事動きました。

参考にしたページ

以上です。

Posted in program | タグ: , , , | Leave a Comment »