タグ

javassistに関するyohjizzz-backupのブックマーク (5)

  • 総称型(Generics)は取得できない…? - ようじのにっき

    Seasar も Spring もいいんだけど、、なんか DI の為だけに開発者がインターフェイスつくるってルールもなんかなぁって思う今日この頃…。生産性、生産性…って言うなら、インターフェイス(の作成)を省く手段を考えるのもいいかなってことで、「javassist」使って、POJOのロジックからインターフェイスを自動生成する Eclipse のビルダーでも作ってみようかと。 んで、サンプル↓作ってみたところ、、、 CtClass ctClass = classPool.get("hoge.logic.impl.HogeLogicImpl"); // 実装済みの POJO … CtMethod[] ctMethods = ctClass.getMethods(); CtClass ctInterface = classPool.makeInterface("hoge.logic.HogeL

  • jboss.org: community driven

  • J2SE 5.0 Tiger 虎の穴 Instrumentation

    最近、よく目にするのがアスペクト指向という言葉。 あるプログラムの実行中に、指定されたところで別のコードの断片 (アスペクト) を挿入して自動的に実行してまうというのが基的な考え方だと思います。たとえば、JBoss は任意のオブジェクト (Plain Old Java Object 略して POJO なんて呼ばれています) を EJB に必要なコードを組み込んで、自動的に EJB に変換してしまうなんてことをやってくれるようです。 こういうことを Martin Fowler は Dependency Injection (依存性の注入) と呼んでいます。 コンテナに必要な処理を無理やり POJO に埋め込んでしまうわけです。 さて、こういったことをやるにはバイトコードを変更してしまうという方法もあります。今までバイトコード操作といえば Apache の BCEL や Javaasist

    yohjizzz-backup
    yohjizzz-backup 2007/12/03
    「バイトコードを動的に操作 Instrumentation …」
  • 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

  • 1