私は注釈を使用する大きなスプリングWebアプリケーションを持っています。しかし、@コンポーネント/サービスで注釈が付けられているが、呼び出された場所から自動実行されないクラスもあります。代わりに、新しい演算子が使用されます。@Autowired以外のすべてのクラスを見つける
new演算子が使用されているユーザー定義クラスのインスタンスをすべて探したいとします。
基本的には、新しいHttpラッパークラス(springコンポーネント)を作成しました。アプリケーションの複数の場所から呼び出すようにしています。チェーンの先頭からのクラスとクラスは、スプリングで管理されているため、自動配線が機能するため、いくつかの場所で動作します。しかし、呼び出し元チェーン内のクラスの1つがnewを使用してインスタンス化され、スプリング管理されていないため、一部の場所では機能しません。だから、私はこれを修正し、そのようなクラスを春に管理するようにしたい。
私は100種類のクラスについて話していますので、3〜4時間後に行うことができるツールや方法を提案し、人為的ミスを防ぎます。私は日食を使う。
例:
@Component
public class MyHttpClient {
public int execute() {
...
}
}
@Component
public class UtilC {
@Autowired
private MyHttpClient client;
public int methodC() {
// When methodC is called from A, it works
// but when called from B, it gives NullPointerException
client.execute();
}
}
@Component
public class UtilB {
private UtilC c = new UtilC();
public int methodB() {
c.methodC();
}
}
@Component
public class UtilA {
@Autowired
private UtilC c;
public int methodA() {
c.methodC();
}
}
この提案しないでください。私は見つけるために、新しいUtilC
は、彼らがうまくなるようにSomeService' 'のような名前が付けられます(ただし、コンテナを実行時に、もちろん、反射的にそれを呼び出すことができます)@XmlRootElement用法でアノテートされたクラスのctorのためのエラーを作成することができますあなたは正規表現を書くことができますか? – ChiefTwoPencils
コール階層(Ctrl-Alt-H)は、コンストラクタを誰が呼び出すかを教えてくれませんか?オブジェクトがSpringで管理されていると想定されている場合、Spring以外のコンストラクタを呼び出す必要はありません。これは、Springがリフレクションを使用して表示するため表示されません。 Call Hierarchyを使用するコンストラクタがない場合は、一時的に作成します。 – Andreas
いいえ、それらの正規表現を書くように定義されていません。新しい演算子を使用するeclipseのユーザー定義クラスのインスタンス変数を検索できますか? –