タグ

aopとjavaに関するyohjizzz-backupのブックマーク (3)

  • Javassistを使った動的プロキシの作成

    前回の「 動的プロキシとシリアライズ」エントリで紹介した通り,今回はその第一歩として,Javassistを使って動的プロキシを作成するための方法を紹介してみようと思う。 Javassistは,動的プロキシを作成するためのライブラリというよりは,バイトコードを操作するためのライブラリである。とは言っても,バイトコードに対する低レベルな処理は,Javassistに完全にお任せで大丈夫である。JavassistのAPIを使っている限りでは,バイトコードに関する知識はほぼ0で良い。Javassistを使うと,クラスファイルを作り出すこともできるし,ファイルとして生成しなくても,その場でClassオブジェクトとして利用することが可能である。生成したいクラスについて,親クラスやインタフェースを実装させることもできるし,フィールドやメソッドを追加することもできる。 では,さっそく例を見ていこう。まず,次

    yohjizzz-backup
    yohjizzz-backup 2007/12/03
    「Javassistを使うと、クラスファイルを作り出すこともできるし...」
  • 動的プロキシとシリアライズ

    一般的なDIコンテナに大抵標準装備されている機能に,AOPがある。例えば,あるオブジェクトのあるメソッドが呼び出された際に,そのメソッドを処理する前に何らかの処理を挟み込む,などがAOPである。この機構を実現するためには,動的プロキシと呼ばれる機能が必要となる。 デザインパターンのProxyパターンは,あるオブジェクトと同等のインタフェースを持つProxyクラスを作成し,そのProxyクラスの中から来のオブジェクトを呼びだすようにする。クライアントは来のオブジェクトを触っている感覚なのだが,実際にはProxyクラスという「代理」のものが応答し,来のオブジェクトを当に呼び出すかどうかの判断とか,引数の内容を変更してしまったり,来のオブジェクトからスローされる例外の処理をProxyクラス内でしてしまう,などの機能拡張をProxyクラスで行うというパターンである。クライアント側は,Pr

  • ひがやすを blog - JavaからRubyへ -

    http://d.hatena.ne.jp/higayasuo/20070417#1176813784の続き。 前回のエントリーでDIContainerが提供する機能で重要なのは AOP スコープ管理 で、IoCがDIContainerの敷居を高くしていると書きました。それでは、どうしたらよいのでしょうか。 必要なオブジェクトは、自分から取りにいけばよいのです。たとえば、AOPとスコープ管理を低要するFactoryクラスがあるとします。 public class Factory { public static T getInstance(Class<? extends T> type) { ... } }使うときには、次のように呼び出します。 Service service = Factory.getInstance(Serivice.class);このFactoryクラスを使ったときのC

    ひがやすを blog - JavaからRubyへ -
    yohjizzz-backup
    yohjizzz-backup 2007/12/01
    DIって、いる?いらね?のオハナシ○
  • 1