liguofeng29’s blog

個人勉強用ブログだっす。

Seasar2

Seasar2 - 他のプロダクト

キーワード概要 S2JDBC DB処理 S2JDBC-Gen DB処理 S2Unit 単体テスト S2Junit4 単体テスト S2Mai メール処理 S2Chronos バッチ処理 S2Config 設定ファイルの外部化 S2CSV CSV入出力

SAStrutsキーワード

キーワード概要 アクション 一つ以上の実行メソッドを持っているクラス アクションフォーム リクエストパラメータを受け取るクラス(必須ではない) 実行メソッド リクエスト時に呼ばれるメソッド URLマッピング URLからどのアクションクラスのどの実行メソッ…

S2AOP - 独自InterType

独自にInterTypeを作成する場合は、次のインターフェースまたは、抽象クラスを実装します。 org.seasar.framework.aop.InterType org.seasar.framework.aop.intertype.AbstractInterType 空クラスにメソッドを追加してみる。 app.dicon

S2AOP - InterType

InterTypeはクラスの静的な構造(フィールド追加、メソッド追加)を変更することができます。 S2AOPとして提供しているInterType - PropertyInterType a. フィールドに対するsetter,getterが追加できる。 b. <interType>タグを使う c. protected, publicフィールドであ</intertype>…

S2AOP - 独自Interceptor

独自にInterceptorを作成する場合は、次のインターフェースまたは、抽象クラスを実装します。 org.aopalliance.intercept.MethodInterceptor org.seasar.framework.aop.interceptors.AbstractInterceptor app.dicon

S2AOP - Interceptorのグループ化

InterceptorChainクラスを使い、Interceptorをクループ化する。 <component name="interceptor1" ... /> <component name="interceptor2" ... /> <component name="chain" class="org.seasar.framework.aop.interceptors.InterceptorChain"> <initMethod name="add"><arg>interceptor1</arg></initmethod></component></component></component>

S2AOP - 標準Interceptor

S2AOPとして提供するInterceptor. 予めaop.diconに登録してある。 クラス名コンポーネント名説明 TraceInterceptor aop.traceInterceptor トレースログ出力 ClassLoaderAwareTraceInterceptor aop.classLoaderAwareTraceIntercept…

S2AOPとは

AOPはAspect oriented Programming(アスペクト指向プログラミング)である。 なにができるを簡単を説明すると 複数のメソッドの前後同じ処理(ログ出力とか)を適用できる。 Seasar2ではS2AOPという、S2Containerで管理するコンポーネントに対してAOP適用する…

【インクルード】【名前空間】【環境名】

1. diconファイルの分割 2. diconファイルの自動切り替え include : 親は子のコンポーネントが参照できるが、逆はできない。 containerインスタンスが複数生成される。 xi:include : 親と子は相互参照可能。 読み込まるので、containerインスタンスは一つ生…

OGNL

diconファイルではOGNL式(Object-Graph-Navigation Language)が使用可能です。 1. リテラル 2. コンポーネントのプロパティ、メソッド 3. 配列、マップ参照 4. 静的プロパティ、メソッド 5. オブジェクト生成 などなど app.dicon

外部バインディング

diconファイルの登録したコンポーネント以外に、外部コンテキストによって提供される値をバインドする機能です。 この機能はWebアプリケーションにおいてリクエストパラメータの値など自動バインディングするために使用されます。 外部バインディングを有効…

自動バインディング

DIの指定を省略した場合、 コンポーネント間の依存関係は、 型および名前によってS2Containerが自動的に解決します。 componentタグのautoBinding属性を指定することで細かく制御することもできます。 autoBinding説明 auto(default) コンストラクタとプロパ…

Dependency Injectionタイプその4 - フィールド・インジェクション

フィールドにDIを行なうのがフィールド・インジェクションです。 フィールドには、Bindingアノテーションを使って指定します。この機能は、2.4から利用できます。 app.dicon < <components> <include path="convention.dicon"/> </include></components>

Dependency Injectionタイプその3 - メソッド・インジェクション

メソッドにDIを行なうのがメソッド・インジェクションです。 コンポーネントのメソッドには、componentタグの子タグであるinitMethodタグを使って指定します。 メソッド名はname属性で指定します。 initMethodタグの子タグであるargタグで引数を指定すること…

Dependency Injectionタイプその2 - セッター・インジェクション

セッターメソッドにDIを行なうのがセッター・インジェクションです。 コンポーネントのプロパティには、componentタグの子タグであるpropertyタグを使って指定します。 プロパティ名はname属性で指定します。 app.dicon <components> </components>

Dependency Injectionタイプその1 - コンストラクタ・インジェクション

コンストラクタの引数にDIを行なうのがコンストラクタ・インジェクションです。 コンストラクタの引数には、componentタグの子タグであるargタグを使って指定します。 app.dicon <components> <include path="convention.dicon"/> </include></components>

S2Container - 暗黙コンポーネント

S2ContainerをWebアプリで使用する際に下記 コンポーネントはdicon.appに定義しなくても使用できる。 型コンポーネント名 S2Container container HttpServletRequest request HttpServletResponse response ServletContext application map applicationScope…

S2Container - コンポーネントの定義とライフサイクル

1. コンポーネントの定義はcomponetタグで定義する。 属性名説明 class(必須) コンポーネントのクラスを指定する name コンポーネント名を指定する instance コンポーネントのライフサイクルを指定する。詳細は2,3を参照 autoBinding コンポーネントの自動バ…

S2Container - 生成方法

1. SingletonS2ContainerFactory VM上に一つのコンテナ存在していい場合に使う。 2. S2ContainerFactory VM上に複数のコンテナが必要な場合に使う。 3. S2ContainerServlet Webアプリケーションの場合に使う。 S2ContainerServletがSingletonS2ContainerFact…