SpringSourceブログエントリでは、次の文がstereotypeを参照しています。
なぜなら
@Controller
は、Springの@Component
ステレオタイプアノテーション、クラスはコンテナのコンポーネントスキャンプロセスの一部としてSpringコンテナによって自動的に検出され、Bean定義を作成し、他のSpring管理コンポーネントと同様にインスタンスを依存性注入できます。
このWordステレオタイプ参照の使用法は何ですか?これは春の技術用語ですか?または、ステレオタイプは一般的な意味で使用されていますか?
JavaDoc はそれについて少し説明しています。
アーキテクチャ全体におけるタイプまたはメソッドの役割を示す注釈(実装レベルではなく概念レベル)。
Merriam-Webster のstereotype
の名詞定義は次のことを言っています。
固定または一般的なパターンに適合するもの;特に:グループのメンバーによって共有され、過度に単純化された意見、偏見のある態度、または批判的でない判断を表す、標準化されたメンタルピクチャ
注釈が付けられている特定のクラスの役割を提案するためのようです。これは理にかなっているようです。なぜなら、コントローラークラスに@Controller
の注釈を付け、サービスクラスに@Service
の注釈を付けるなどのことが推奨されることが多いからです。
Springは、明らかなコンポーネントスキャン機能に加えて、AOPのニーズに合わせてニースのポイントカット境界を設定することを提案しています。
これは春の技術用語ですか?または、ステレオタイプは一般的な意味で使用されていますか?
私は、Springは、ステレオタイプという用語を現実の世界からSpringの専門用語に借用していると思います。
アメリカ英語辞書より:
(名詞)広く保持されているが、特定のタイプの人または物の固定された単純化されたイメージまたはアイデア。
現実の世界では、たとえばステレオタイプを知っています:アメリカ人はコーヒーを飲むのが好きです。イギリス人はお茶を飲むのが好きです。もちろん、すべてのアメリカ人またはイギリス人に当てはまるわけではありません。それは、アメリカ人やイギリス人を単純化しすぎているだけです。
ステレオタイプを使用すると、意思決定を迅速に行うことができます。あなたのアメリカ人の友人が来るとき、彼らに「何を飲みたいですか?」と尋ねる代わりに。そして、彼らの応答を待ちます。あなたは彼らがコーヒーが欲しいと仮定することができます。
Springでは、ステレオタイプはオブジェクトの作成を簡素化するのに役立ちます。 Type
のステレオタイプを作成するため、Type
間の関係を定義する必要はありません。
注: JavaではType
。クラスはType
です。
これらのクラスがあるとしましょう:
public abstract class Friend {
public abstract String favoriteDrink();
}
public class American extends Friend {
@Override
public String favoriteDrink() {
return "Coffee";
}
}
ステレオタイプなし
構成で友達とアメリカ人(友達はアメリカ人)の関係を定義する必要があります。
@Configuration
public class YourAppConfig {
@Bean
public Friend defineFriend() {
return new American();
}
}
そのため、テストでは次のことを確認できます。
@RunWith(SpringRunner.class)
@SpringBootTest
public class YourAppTest {
@Autowired
private Friend friend;
@Test
public void drinkTest() {
assertEquals(friend.favoriteDrink(), "Coffee");
}
}
ステレオタイプあり
ステレオタイプは、クラスの宣言に直接基づいて、すべての友人がアメリカ人であることをSpringに伝えます。
@Component
public class American extends Friend {
@Override
public String favoriteDrink() {
return "Coffee";
}
}
クラスがFriendクラスに遭遇すると、そのクラスはアメリカ人であると想定されます。これは、友人とアメリカ人との1対1の関係です。
クラスをそのように動作させたい場合、これは非常に便利です。構成ファイルにBeanを定義する必要はありません。 (構成ファイルも必要ありません)。 SpringはそのステレオタイプからBeanを自動的に作成します。
そのため、コンポーネント、リポジトリ、サービス、コントローラーの各アノテーションはステレオタイプパッケージに属します。 Springはクラスの詳細をあまり気にしません。Springの観点からは、クラスはRepository
、Service
、Controller
のいずれかに属します。そのうち、Component
です。
春はクラスを単純化するだけです。したがって、ステレオタイプという名前。