21

私は春のフレームワークが初めてです。私が見たほとんどの Spring チュートリアルでは、Spring は「非侵襲的」であると説明されています。

侵略的 とはどういう意味ですか? Java で Spring を使用するメリットとは?

4

9 に答える 9

12

IoC コンテナーが侵襲的である場合は、コードで依存関係の挿入を明示的に認識する必要があることを意味します。たとえば、Guice では、@Inject注釈 (およびその他) を使用します。これらのアノテーションは以前よりも標準化されています。これは良いことです。これは、単一のアノテーション セットで (少なくとも理論的には) コードをさまざまな侵襲的 IoC コンテナーで使用できるようにすることができることを意味します。

非侵襲的なコンテナーを使用すると、IoC をまったく参照せずにコードを記述できます。すべては、IoC を使用していなくても存在するメンバーと注釈のリフレクションによって決定されます

侵襲的コンテナと非侵襲的コンテナの両方に長所と短所があります。たとえば、コードをより具体的にすると、バインディングの詳細の一部をより細かく制御できますが、違いを認識することは価値があります。

于 2013-03-11T07:14:09.277 に答える
4

春は侵襲的でも非侵襲的でもあり得ます、それはあなた次第です。

非侵入型のSpringは、アノテーション(@Autowiredなど)や独自のクラス(JdbcTemplateなど)を使用せず、構成を使用してBean(単純なPOJO)を相互に接続するだけです(コードでSpringを初期化する必要がありますが、とにかく少し侵襲的です)。ただし、コードを大幅に変更することなく、春を自由にドロップできます。一方、Invasive Springは、テンプレートクラス(永続性、Webサービスなど)、アノテーション、およびリファクタリングなしでは単純に残せないその他のもの(使用する場合)を提供します。

編集:Springは、インターフェースの実装やクラスの拡張を強制しないため、侵襲的ではないと言う人もいます。私にとって、フレームワークは、簡単に交換できれば、侵襲的ではありません。

于 2013-03-11T07:59:15.310 に答える
4

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

于 2013-03-11T07:16:30.917 に答える
0

Spring フレームワークは、Spring API によって提供される定義済みのクラスまたはインターフェイスからクラスを拡張または実装することをプログラマーに強制しないことを意味する非侵襲的手段であると言われています。侵略的であること。

Struts フレームワークの場合、プログラマーは、Struts API によって提供される基本クラスからプログラマー クラスを拡張する必要があります。

于 2013-10-25T18:25:51.037 に答える