2011-12-22 10 views
1

レガシーコードを持つ既存のアプリケーションでguiceを使いたいと思っています。それをやり始める方法に関する指針とBKMはありますか? 私は1つのアプローチhereを見つけ、さらなる情報と詳細を探しています。
ありがとうございます!既存のアプリケーションにguiceを追加する

編集:私のアプリについてもう少し詳しく:それは自宅サーバーアプリケーションで実行されているGUIアプリケーションなので、GUIアプリケーションはありません。それはそれを移行するかどうか、私は疑問を持っている多くのレガシーコードを持っています。

答えて

3

しばらく混乱することが予想されます。私はとにかくだった。私はGuiceのホームページでvideoが大好きです。

あなたのアプリケーションにGuiceや依存性注入フレームワークを組み込むことは、セーターのスレッドを引っ張って、本当に終わりを見つけられないように私に正確に説明されました。つまり、アプリケーションのいくつかの分野でアプローチを変更する可能性があるということです。 servletsから、jdbcフレームワーク(mybatis-guiceを使用)、ユニットテスト(jukitoを参照)など。

Guice user groupは良いリソースです。

一度にすべてを行うとは思わない。 Guiceの方法を完全に開発するには、時間がかかることがあります。

4

あなたの戦略は、今日のアプリケーションの構築方法によって異なります。あなたがシングルトンを過度に使用している場合、または他のフレームワークを使用している場合。私はフレームワークのないアプリケーションをSpringやGuiceのようなものに移植しました。これは簡単な作業ではなく、コードの量、チームの人数、チームがアプリケーションを構築する新しい方法をどれくらいうまく受け入れるかによって、どの程度成功するかが大きく異なります。あなたのチームから購入していない場合は、コードを作成する前にそこから始めたいと思います。人々にアプリのビジョンを納得させ、質問に答えたり、頭を少しずつデザインしたり、自分の意見を歓迎したりしてください。彼らが大きな懸念を抱いているときには、彼らに声をかけてください。解決策がない場合は、それを取り戻して設計してください。誰もが乗るまで繰り返す。

コードを移植しました。それは、あなたが持っているアプリケーションのタイプ(Webベース、デスクトップなど)によって異なります。しかし、一般的に、私はこのようなものを移植しているときに、私は空のプロジェクトを作成し、それをあなたのチームと一緒に設計した方法で設定します。次に、長命のオブジェクトをコンテナに引き込み始めます。シングルトンは通常、アプリケーションの全期間に渡って生きるため、適切な場所です。 getInstance()メソッドではなく、コンテナでインスタンス化を開始します。シングルトンのパターンを壊してコンストラクタを公開しなければならないかもしれませんが、最終的にはシングルトンを取り除きたいことがあります。静的な参照を保持することができます。オブジェクトをリファクタリングして取得する際には、getInstance()を使用して、インスタンス変数/ getter/setterを介して与えられた参照を使用しないようにします。

ゆっくりとGuiceコンテナからアプリケーションを実行できるようになるはずです。この時点でアプリケーションの一部しか移植していない可能性があります。ポーティング部分を1つずつ保持し、コンテナ内でテストします。この時点で、他のチームメンバーの助けを借りることができる十分な基盤が得られます。最終的にはアプリ全体が移植され、Guiceの方法で作業するために一部をリファクタリングすることができます。戻って静的な参照とgetInstance()への呼び出しを取り除くことができます。

私は常に、これらのタイプの変換をより効率的に処理するために、リファクタリングではなくスケルトンの設定と移植を行っています。新しい仕事を全面的に止めることも重要です。それは最後に多くの心を救うでしょう。私は新しい仕事をやめさせようとしましたが、このタイプのコンバージョンは、チームが従来の方法で新しいコードを続けているので、多くのリリースで使用できます。次のリリースで実際の作業が始まる前に、新しいリリースの後に始まることがありますので、スケルトンを置いているので他のメンバーがあなたを助けることができるポイントに達することができます。

管理を忘れないでください。彼らが新しい機能だけを要求するなら、あなたはチームをコントロールするのに苦労します。彼らがあなたの努力を買わなければ、仕上げが非常に難しくなります。

関連する問題