オブジェクトを動的に作成する必要があります。Springを使用してクラス名のマップを作成します。今、私は使用することができます
バネApplicationContext.getbean(className)
また
Java Class.forName(className).newInstance()
。
どちらの方法がより効率的ですか?
ありがとうございます。
オブジェクトを動的に作成する必要があります。Springを使用してクラス名のマップを作成します。今、私は使用することができます
バネApplicationContext.getbean(className)
また
Java Class.forName(className).newInstance()
。
どちらの方法がより効率的ですか?
ありがとうございます。
Spring BeanがプロトタイプスコープのBeanである場合、Springはそれをリフレクションでインスタンス化する必要があるため、2番目のスニペットが行うことを実行する必要があります。ただし、SpringコンテキストにBeanを取得するように要求しても、クラスの新しいインスタンスを取得するだけではありません。Spring Beanを返します。このBeanには、適用される側面(セキュリティ、トランザクションなど)、依存関係の注入などを行うことができます。
パフォーマンスに基づいて何を呼び出すかを選択するのではなく、何を取得したいかに基づいて選択する必要があります。とにかく、両方の呼び出しのコストは、アプリが行う他の処理(ネットワーク呼び出し、データベースクエリなど)と比較して、おそらくごくわずかです。
SpringマネージドBeanの場合は、ApplicationContextを介して作成する必要があります。そうしないと、依存関係が設定されません。Spring Beanではなく、通常のJavaオブジェクトである場合、それは不要なオーバーヘッドであるため、後者を使用できます。
Springソリューションは、作成されたオブジェクトの依存関係も解決します。Springルックアップメソッドのインジェクション機能も確認できます