Guice には同様の概念がありません。たとえば、Guice は、特別なクラス アノテーションを必要とせずに、デフォルトのコンストラクターを使用して任意のクラスを自動的に注入できます。spring が起動時にすべての Bean について知る必要があるのはなぜですか? 自動配線の目的で、クラスパスからクラスをルックアップするだけでは春になりませんか? 私が考えることができる 1 つの理由は、AOP のためです。しかし、AOP を使用していない場合、Bean 定義の計算全体によって、まったく不要なかなりの量の起動時間が追加されます。
編集:
明示的に、クラスパスからオンデマンドでクラスをルックアップする春が欲しい
@Component
class Bar {
}
@Component
class Foo {
@Autowired Bar bar;
public void doSomething() {}
}
Foo
そのため、Springを使用して Bean を作成すると、クラスパスを簡単に検索できるようにするgetBean()
必要があることがわかります。これは Guice が行うことであり、開発中に非常に遅くなる不必要なコンポーネントのスキャンを回避します。Bar
Bar