3

DI フレームワークによって作成されていないオブジェクトに依存関係を挿入するにはどうすればよいですか?

Objectify を使用して Google App Engine でアプリケーションを実行しているため、データストアからデータがフェッチされると、Objectify によって POJO が作成されます。個人的には、car.getOwner().getName() のような関連オブジェクトを取得するための便利なメソッドが好きです。 car オブジェクトは Objectify によって作成されます。getOwner() 所有者のコードは次のようになります

public Person getOwner(){
    return PersonService.getById(this.ownerId);
}

ServiceLocator で改善できます

public Person getOwner(){
    return ServiceLocator.getService(PersonService.class).getById(this.ownerId);
}

しかし、DIでこれを行うにはどうすればよいですか?

Guiceを見たのですが、Injectorをsingletonに入れてgetOwnerメソッドからアクセスするしか考えられません。

私の考えは間違っていますか?

4

2 に答える 2

1

Objectify4 を使用している場合は、ObjectifyFactory をサブクラス化し、construct() メソッドをオーバーライドできます。これにより、エンティティ クラスを挿入できます。

ここで例を見ることができます: https://github.com/stickfigure/motomapia/blob/master/java/com/motomapia/OfyFactory.java

于 2012-10-30T05:09:34.837 に答える
0

私が考えることができる唯一の解決策は、読み込み時間の織り方です、私は引用します:

context:load-time-weaver は、AspectJ の Load-time Weaver を現在のクラスローダーに登録します。そのため、Spring Bean だけでなく、定義されたポイントカットに一致するクラスローダーにロードされたすべてのクラスが対象になります。

しかし、それはGAEの制限と競合すると思いますが、GAEでこれをまだ試していません。

于 2012-10-29T15:44:51.183 に答える