アットウィキロゴ
mamatumo @Wiki 
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

mamatumo @Wiki 

SpringFW旧記事

最終更新:

匿名ユーザー

- view
メンバー限定 登録/ログイン

Spring Framework [#v6494139]

パッケージ概要 [#n38a2ed0]

パッケージ 概要
org.springframework.aop AOP関連
org.springframework.beans Bean管理(BeanFactory)関連
org.springframework.context ApplicationContext関連
org.springframework.core 例外・IO処理関連
org.springframework.dao データアクセス例外・Daoサポート関連
org.springframework.ejb EJBアクセス関連
org.springframework.jdbc JDBC高レベル抽象化FW
org.springframework.mail メール送信支援
org.springframework.metadata ソースレベルメタ属性関連
org.springframework.orm O/Rマッピング関連
org.springframework.remoting JAX-RPC/RMIのサポート関連
org.springframework.sheduling タイマー処理支援
org.springframework.transaction トランザクション管理関連
org.springframework.ui UI管理・Freemaker/Velocity支援
org.springframework.util 各種ユーティリティ
org.springframework.validation Beans検証機能
org.springframework.web MVC機能・サーブレット・フィルタなど

肝 [#vfc7ec6b]

DI [#v0702195]

  • Factory
    • BeanFacotry:Bean生成
    • ApplicationContext:Bean生成・メッセージ国際化・イベント通知機構・複数コンテキスト(複数Bean定義)の利用
    • BeanFactory/ApplicatonContextをSingletonで生成する。→ DIコンテナ混在時の不整合を避ける。
      • SingletonBeanFactoryLocator/ContextSingletonBeanFactoryLocatorを使用する
  • Bean(POJO)
    • 生成時・破棄時に、それぞれInitializingBean・DisposableBeanインターフェースを使用しコールバック可能だが、Springに依存させたくない場合はBean定義のinit-method/destroy-methodを使用する

JDBC抽象化 [#n08f68a3]

  • core:JdbcTemplate・各種コールバックインターフェース
    • datasource:DataSource関連・Utils
    • object:Query/Update処理のオブジェクト化。DBから切断して操作可
    • support:JDBCの例外の抽象化+各DBへのエラーコード翻訳

トランザクション [#ad991943]

  • プログラマブル
  • 宣言的
      • JDBCを使用したプログラムブルトラン
      • JTAを使用したプログラムブルトラン

AOP [#vbfd7007]

  • AOPの用語
用語 概要
Aspect 横断的関心事:Crosscutting Concernをモジュール化したもの。SpringではAdvisor/Interceptorとして実装。
Joinpoint メソッド起動・例外スローなどのプログラム上のあるポイント。
Advice AOPフレームワークにより特定のジョインポイントで実行されるアクション。
Pointcut あるアドバイスがいつ起動するかを指定するジョインポイントの集合。
Introduction メソッド・フィールドをアドバイスされるクラスに追加すること。
Target Object Advice・プロキシされるジョインポイントを持つオブジェクト
AOPプロキシ AOPフレームワークにより生成されたAdviceを持つオブジェクト。
Weaving ターゲットをAspectを組み合わせること。Springでは実行時にWeavingされる。
  • ポイントカット
public interface Pointcut {
    //クラスにマッチング
    ClassFilter getClassFilter();
    //メソッドにマッチング
    MethodMatcher getMethodMatcher();
}
    • 静的ポイントカット:メソッドの引数に関しては考慮しない
      • RegexpMethodPointCutクラス
      • RegexpMethodPointCutAdvisorクラス(含アドバイス)
    • 属性駆動ポイントカット:ソースレベルメタデータを使う静的ポイントカット→Manual#8
    • 動的ポイントカット:メソッドの引数も考慮する
      • ControlFlowPointcut
  • アドバイス
種類 インターフェース
Around Advice MethodInterceptor
Before Advice MethodBeforeAdvice
Throws Advice ThrowsAdvice
After Return Advice AfterReturningAdvice
Introduction Advice IntroductionInterceptor

  • アドバイザ
    • ポイントカットをアドバイスを含んだ、アスペクトをモジュール化したもの
    • DefaultPointcutAdvisorクラスなど。
    • Springでは、同じAOPプロキシでアドバイスとアドバイザを両方使用することも可能。

  • Weaving方法:Springでは、DIコンテナとAOPを組み合わせることでWeavingを実現。
    • ProxyFactoryBeanを使用した明示的なAOPプロキシの取得。明示的に1つ1つのAOPプロキシを明記する
      • インターフェースをプロキシ:JDKのDynamicプロキシを使用。
      • クラスをプロキシ:CGLIBを使用。動的なサブクラス生成をするためfinalメソッドのプロキシは不可。
      • 例:PoJoBeanをターゲットにしてトランザクション機能を付加する
    • AutoProxy
      • BeanNameAutoProxyCreator:リテラルやワイルドカードにマッチした名前のBeanに対しAOPプロキシを自動生成。
      • DefaultAdvisorAutoProxyCreator:Advisorを定義することで、ポイントカットにマッチするBeanに対し、AOPプロキシを自動生成。
    • メタデータ駆動自動Proxy:ソースレベルメタデータで指定する。要Commons Attributesでのコンパイル?

使ってみた印象 [#v78340fd]

  • まんず、AOPのAutoProxyがうまく動かない。
  • チェック例外に対しての嫌悪感はかなりのもの
  • JDBCの例外の抽象化はヨイ
  • Bean定義ファイルはS2と比べて冗長になりがち。

Link [#nc9f24c7]

記事メニュー
最近更新されたスレッド
ウィキ募集バナー