SpringMVC+Spring+MyBatis学習ノート:SpringMVCとSpringが一緒に仕事をしている場合、AOPトランザクション管理が機能しない解決方法
2524 ワード
システム:WIN 8.1
データベース:Oracle 11 GR 2
開発ツール:MyEclipse 8.6
フレーム:Spring 3.2.9、SpringMVC3.2.9、MyBatis3.2.8
SpringMVCのspringmvc.xmlファイルにスキャンパッケージを構成し、serviceの注釈を含まないでください.Springのプロファイルプロファイルパッケージをスキャンする場合、controllerの注釈を含まないでください.以下に示します.
Spring MVCのプロファイル:
Springのプロファイル:
Spring MVC起動時のプロファイルには、コンポーネントスキャン、urlマッピング、およびfreemarkerパラメータの設定が含まれており、springが@Service注記のあるクラスをスキャンしないようにします.
Why?
なぜならspringmvc.xmlとアプリケーションContext.xmlは同時ロードではありません.このような設定を行わないと、Springは@Service注釈付きのクラスをすべてコンテナにスキャンし、アプリケーションContextがロードされるまで待機します.xmlの場合、コンテナにすでにサービスクラスが存在するため、cglibはサービスをエージェント化しないため、アプリケーションContextのトランザクション構成が機能せず、異常が発生した場合、データをロールバックできない結果になります.
データベース:Oracle 11 GR 2
開発ツール:MyEclipse 8.6
フレーム:Spring 3.2.9、SpringMVC3.2.9、MyBatis3.2.8
SpringMVCのspringmvc.xmlファイルにスキャンパッケージを構成し、serviceの注釈を含まないでください.Springのプロファイルプロファイルパッケージをスキャンする場合、controllerの注釈を含まないでください.以下に示します.
Spring MVCのプロファイル:
<context:component-scan base-package=" ">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
Springのプロファイル:
1 <context:component-scan base-package=" ">
2
3 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
4
5 </context:component-scan>
Spring MVC起動時のプロファイルには、コンポーネントスキャン、urlマッピング、およびfreemarkerパラメータの設定が含まれており、springが@Service注記のあるクラスをスキャンしないようにします.
Why?
なぜならspringmvc.xmlとアプリケーションContext.xmlは同時ロードではありません.このような設定を行わないと、Springは@Service注釈付きのクラスをすべてコンテナにスキャンし、アプリケーションContextがロードされるまで待機します.xmlの場合、コンテナにすでにサービスクラスが存在するため、cglibはサービスをエージェント化しないため、アプリケーションContextのトランザクション構成が機能せず、異常が発生した場合、データをロールバックできない結果になります.