まず、SSMフレームワークを統合するために学んでブロガー、素晴らしい問題に会っは、業務を制御することで、中に書いた例外があった場合でも、トランザクション制御方法でapplicationContext.xmlをファイルで作業をしませんが、トランザクションは、ピットは、ボーとして、発生した例外で、異常動作の期間は、当社の枠組みに取り込まれている私たちのために、ロールバック操作を行いますが、それはありませんが、私たちが業務を構成し、ことを理由に立ってロールバックされません。主は、控除のお金の最初のアカウントを簡単な転送トランザクションを書きましたが、例外が発生したが、我々はお金を控除した後に実行しているデータベース内で発見した、お金がまだ拘留され、
ブロガーはオンラインメソッドのほとんどを試してみましたが、彼は、私自身の解決策については、次の話を実際の問題を解決しない、唯一の理由を述べています
私は、あなたがトランザクション制御の魔法を達成することができる発見し、転送異常動作のロールバックを達成することができたときにそれがあるspringmvc.xmlファイルの宣言的トランザクション管理の動作構成でした。
applicationContext.xmlを
<?xmlのバージョン= " 1.0 "エンコード= " UTF-8 "?> <豆のxmlns = " http://www.springframework.org/schema/beans " のxmlns:コンテキスト = " http://www.springframework.org /スキーマ/コンテキスト" のxmlns:AOP = " http://www.springframework.org/schema/aop " のxmlns:TX = " http://www.springframework.org/schema/tx " のxmlns:XSI = " のhttp: //www.w3.org/2001/XMLSchema-instance 「 XSI:schemaLocation = "http://www.springframework.org/schema/beans ます。http:// www.springframework.org/schema/beans/spring-beans.xsd ます。http:// www.springframework.org/schema/context のhttp:// WWW .springframework.org /スキーマ/コンテキスト/春-context.xsd ます。http:// www.springframework.org/schema/aop ます。http:// www.springframework.org/schema/aop/spring-aop.xsd ます。http:// www.springframework.org/schema/tx ます。http:// www.springframework.org/schema/tx/spring-tx.xsd "> < - > -ターンスキャンはスキャンしませコントローラに設定することができます! <コンテキスト:コンポーネント・スキャンベースパッケージ=" "com.song> <コンテキスト:除外するフィルタタイプ= "注釈"という表現= "org.springframework.stereotype.Controller" /> </コンテキスト:コンポーネント・スキャン> <! -配置数据库的连接池- > <ビーンID = "データソース"クラス=" com.alibaba.druid.pool.DruidDataSource "> <プロパティ名=" URL "の値= "はjdbc:mysqlの:?///歌serverTimezone = GMT%2B8"> </ property>の <プロパティ名="ユーザ名」値= "ルート"> </ property>の <プロパティ名= "パスワード"値= "ルート"> </ property>の <プロパティ名= "driverClassName"値= "はcom.mysql.jdbc.Driver"> </プロパティ> </豆> <!-設定sqlsessionfactory植物- > <beanクラス= "org.mybatis.spring.SqlSessionFactoryBean" ID = "SessionFactoryの"> <プロパティ名= "データソース" REF = "データソース"> </プロパティ> </豆> <! -スキャンインタフェースの設定- > <beanクラス= "org.mybatis.spring.mapper.MapperScannerConfigurer" ID = "mapperScannerConfigurer"> <プロパティ名= "basePackage"値= "com.song.dao"> </プロパティ> </豆> <! -もともとこの文書に書かれた、と事務の制御を達成することはできません- > <! -のconfigure宣言的トランザクションマネージャ- > <豆上記のid上記=「のTransactionManager」クラス=「org.springframework.jdbc.datasource.DataSourceTransactionManager」> <プロパティ名= "データソース" REF = "データソース"> </プロパティ> </豆> < - -ノートの構成情勢!> < - <TX :!注釈駆動型のTransactionManager = "のTransactionManager"> < / TX:アノテーション・ドリブン> - > < -コンフィギュレーション・サービス- >! <TX:メソッド名= "見つける*"伝播= "REQUIRED"読み取り専用= "真" /> <TX:アドバイスID = "txadvice"トランザクション・マネージャー= "のTransactionManager"> <TX:属性> <TX:メソッド名= "転送"伝播= "REQUIRED"読み取り専用= "偽" /> </ Txは:属性> </ TX:アドバイス> < -织入事务! - > <AOP:設定> <AOP:ポイントカットのid = "txpoint"表現= "実行(* com.song.service.impl * ServiceImpl *(..)。。)" /> <AOP:顧問の助言-REF = "txadvice"ポイントカット-REF = "txpoint"> </ AOP:顧問> </ AOP:config>の </豆>
アプローチはspringmvc.xmlにファイル上に3つの大きな取引です
springmvc.xml
<?xmlのバージョン= " 1.0 "エンコード= " UTF-8 "?> <豆のxmlns = " http://www.springframework.org/schema/beans " のxmlns:コンテキスト = " http://www.springframework.org /スキーマ/コンテキスト" のxmlns:AOP = " http://www.springframework.org/schema/aop " のxmlns:TX = " http://www.springframework.org/schema/tx " のxmlns:MVC = " のhttp: //www.springframework.org/schema/mvc " のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance " XSI:のschemaLocation = " http://www.springframework.org/schema/beans のhttp:// www.springframework.org/schema/beans/spring- beans.xsd ます。http:// www.springframework.org/schema/mvc ます。http:// www.springframework.org/schema/mvc/spring-mvc.xsd ます。http:// www.springframework.org/schema/context ます。http:// www.springframework.org/schema/context/spring-context.xsd ます。http:// www.springframework.org/schema/aop ます。http://www.springframework.org/schema/aop/spring-aop.xsd HTTP:// www.springframework.org/schema/tx HTTP:// www.springframework.org/schema/tx/spring-tx.xsd " > < ! -スキャン設定- > <文脈:スキャンコンポーネントベース -package = " com.song " > <文脈:フィルタタイプ=含む" 注釈"表現= " org.springframework.stereotype.Controller " /> </をコンテキスト:コンポーネントスキャン> < - MVCオープニングスプリングサポート(オープン構成マップとアダプタ) - >! <MVC:アノテーション・ドリブン> </ MVC:注釈駆動型> <! -マッパーの構成図- > <豆のクラス = " org.springframework.web.servlet.view.InternalResourceViewResolver " ID = " InternalResourceViewResolver " > <プロパティ名= " サフィックス"値= " .jspという" > </プロパティ> <! - > -この小さなレバレッジに注意を払う必要があります 。<プロパティ名= " 接頭辞"値= " / WEB-INF /ページ/ " > </プロパティ> </豆> <!- 2つの方法で設定解除の静的リソース: springmvcフレームワーク分析を使用して: 設定はパスのDispatcherServletをマッピングしない場合/ 時間は、静的リソースに対する要求が最終的にTomcatのデフォルトの設定によって処理されます、それは静的なリソースへの通常のアクセスには影響しません。 マッピングが設定されている場合は、パスのDispatcherServlet / 時間がspringmvcファイルで設定する必要があり、静的リソース解放ので、デフォルトのTomcatのデフォルト設定を上書きします。 - > < - <MVC :!マッピングリソース= " / JS / ** " LOCATION = " / JS / " > </ MVC:リソース> - > <MVC:デフォルト -servlet-ハンドラのデフォルト -servlet名= " デフォルト" > </ MVC:デフォルト -servlet-ハンドラ> < -切片に構成されたインターセプター- >! <MVC:インターセプタ> <MVC:インターセプター> <MVC:" /> <豆のクラス = " com.song.interceptor.MyInterceptor " > </豆> </ MVC:迎撃> </ MVC:インターセプタ> <! -配置声明式事务管理器- > <豆ID = " トランザクションマネージャー" クラス = " org.springframework.jdbc.datasource.DataSourceTransactionManager " > <プロパティ名= " データソース" REF = " データソース" > </ property>の </豆> <! -注解配置事务- > < - <TX:!、アノテーション駆動型トランザクションマネージャ=" トランザクションマネージャー" > </ TX:注釈駆動型> - > < -配置事务- >! <TX:アドバイスID = " txadvice "トランザクション・マネージャー= " のTransactionManager " > <TX:属性> <TX:メソッド名前= " *見つける"伝播= " REQUIRED "読み取り専用= " 真" /> <TX:メソッド名= " 転送"伝播= " REQUIRED "読み取り専用= 「偽」 /> </ TX:属性> </ TX:アドバイス> <! -织入事务- > <AOP:config>の <AOP:ポイントカットのid = " txpoint "表現= " 実行(* com.song.service.impl。 * ServiceImpl *(..))。" /> <AOP:顧問advice- REF = " txadvice " pointcut- REF = " txpoint " > </ AOP:顧問> </ AOP:config>の </豆>
これは、そこに他のソリューションであるだけでなく、歓迎している場合、私たちは一緒に学ぶ問題を解決するだろう
PS:記録エラー
エラー名「accountController」でBeanを作成:フィールド「AccountServiceの」を通して表現不満依存。型「com.song.service.impl.AccountServiceImpl」であることが期待が、実際にタイプのだっれるビーンという名前の「accountServiceImpl」:ネストされた例外がorg.springframework.beans.factory.BeanNotOfRequiredTypeExceptionは「com.sun.proxy $ Proxy24」。
このエラー・タイプは、インタフェースサービス層Beanオブジェクトを使用せずに移植されるときにコントローラ層、クラスの実現のタイプ