合理的に考えると、どのように春が速くなるでしょうか? コードのラッパーです。また、適用可能なデフォルトのコンストラクター/オーバーロードされたコンストラクターも通過します。
例 import demo.dependency.injection.IAccount;
public class SavingAccount implements IAccount {
public static int SAVING_INT = 5;
public SavingAccount() {
System.out.println("Default constructor invoked!!");
}
@Override
public int calculateInterest(int amount, int duration) {
return (amount*duration*SAVING_INT)/100;
}
}
Bean 構成:
<!-- Fixed Account -->
<bean id="FixedAccount" class="demo.dependency.injection.impl.FixedAccount">
</bean>
アプリケーションコンテキストを使用して Bean をロードすると、出力されます
ApplicationContext context = new FileSystemXmlApplicationContext("/Beans/SpringDemo.xml");
Account myAccount = (Account)context.getBean("FixedAccount");
Default constructor invoked!!
ただし、ここでは、パフォーマンス以外にも利点があることを理解する必要があります。好き - DI - 管理性
したがって、パフォーマンスの理由は正当化できないと思います。
それとは別に、Spring IOC フレームワークは、Spring Bean 構成を使用してインスタンスを作成する方法を提供します。ただし、 new 演算子を使用してインスタンスを作成することを止めるわけではありません。
spring Beanの代わりにnewを使用することを選択した例を挙げたいと思います。
Web アプリケーションで、ビジネス ロジック用に異なるメソッドを持つシングルトン Bean があり、各操作で操作用の新しいオブジェクト インスタンスが必要になる場合があります (メソッド レベルの変数はスレッド セーフです)。
シングルトン Bean にプロトタイプ Bean がある場合、シングルトン Bean が呼び出されたときに 1 回だけ呼び出されるためです。完全に理解するために、これを実行してください。
http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch04s04.html