1

依存性注入は制御の反転を意味するため、次の呼び出しで IOC を確認できません。

  Car car = (Car)ApplicationContext.getBean("car");

クラス自体を解決するのはSpringではありません.Carを自分でコードに書いたからです。

さらに、すべての本は 2 種類の DI について述べています: セッター DI とコンストラクター DI。

したがって、 ApplicationContext.getBean() の呼び出しが何らかの種類の依存性注入と IOC を意味するのか、それとも DI がまったくないのか疑問に思っていました。

4

4 に答える 4

1

いいえ。この方法でBeanを取得することは、依存性注入ではありません。注入されていません。その豆のフィールドはおそらく注入されます。

時々それを回避する方法が本当にありませんが、一般的に、これを避けるようにしてください。

于 2013-02-12T09:30:48.847 に答える
0

クラス自体を解決するのはSpringではありません.Carを自分でコードに書いたからです。

その場合、NoSuchBeanDefinitionException. 管理する必要があるすべてのクラスについて Spring に通知する必要があります。これを行うには、自動配線から記述子での明示的な定義まで、複数の方法があります。

于 2013-02-12T09:34:02.390 に答える
0

は、Spring のインジェクションが使用getBeanするものと同じ構成 ( applicationContext) を使用しますが、例では依存性インジェクションを使用していません。(まあ、CarBean には依存関係が注入される可能性があるため、例からは実際にはわかりません)。

しかし、通常、依存性注入とは、自分でプログラムによる設定 ( Car car = something ) を行わないことを意味します。Spring コンテナーはcarインスタンスを作成し、carのセッターまたはコンストラクターを使用して、x が機能するために必要な依存関係を注入します。

于 2013-02-12T09:35:59.903 に答える
0

なぜこの方法で車の参照を取得しようとしているのかわかりません...別のクラスで車の参照を使用したい場合は、あなたが言ったように単にセッターまたはコンストラクターの注入を使用できます..上記の方法では、そこにどんな種類の DI も表示されません。確かに言えることの 1 つは、アプリケーション コンテキストから参照を取得しようとしているときに、Bean が IOC コンテナーによって管理されているということです...

于 2013-02-12T09:36:08.750 に答える