私は春のフレームワークが初めてです。私が見たほとんどの Spring チュートリアルでは、Spring は「非侵襲的」であると説明されています。
侵略的 とはどういう意味ですか? Java で Spring を使用するメリットとは?
IoC コンテナーが侵襲的である場合は、コードで依存関係の挿入を明示的に認識する必要があることを意味します。たとえば、Guice では、@Inject
注釈 (およびその他) を使用します。これらのアノテーションは以前よりも標準化されています。これは良いことです。これは、単一のアノテーション セットで (少なくとも理論的には) コードをさまざまな侵襲的 IoC コンテナーで使用できるようにすることができることを意味します。
非侵襲的なコンテナーを使用すると、IoC をまったく参照せずにコードを記述できます。すべては、IoC を使用していなくても存在するメンバーと注釈のリフレクションによって決定されます。
侵襲的コンテナと非侵襲的コンテナの両方に長所と短所があります。たとえば、コードをより具体的にすると、バインディングの詳細の一部をより細かく制御できますが、違いを認識することは価値があります。
春は侵襲的でも非侵襲的でもあり得ます、それはあなた次第です。
非侵入型のSpringは、アノテーション(@Autowiredなど)や独自のクラス(JdbcTemplateなど)を使用せず、構成を使用してBean(単純なPOJO)を相互に接続するだけです(コードでSpringを初期化する必要がありますが、とにかく少し侵襲的です)。ただし、コードを大幅に変更することなく、春を自由にドロップできます。一方、Invasive Springは、テンプレートクラス(永続性、Webサービスなど)、アノテーション、およびリファクタリングなしでは単純に残せないその他のもの(使用する場合)を提供します。
編集:Springは、インターフェースの実装やクラスの拡張を強制しないため、侵襲的ではないと言う人もいます。私にとって、フレームワークは、簡単に交換できれば、侵襲的ではありません。
check http://forum.springsource.org/showthread.php?27846-Spring-is-non-invasive
What does it really means?
"You are not forced to import or extend any Spring APIs, example Struts forces you to extend Action".
Of course in some areas, such as the web framework, it's impossible to avoid aplication code depending on the framework. But Spring consistently attempts to reach the non-invasive ideal where configuration management is concerned
Spring フレームワークは、Spring API によって提供される定義済みのクラスまたはインターフェイスからクラスを拡張または実装することをプログラマーに強制しないことを意味する非侵襲的手段であると言われています。侵略的であること。
Struts フレームワークの場合、プログラマーは、Struts API によって提供される基本クラスからプログラマー クラスを拡張する必要があります。