これは技術的な春の用語ですか?それとも、ステレオタイプは一般的な意味で使用されているだけですか?
Springは、ステレオタイプという用語を現実の世界からSpringの専門用語に借用していると思います。
アメリカ英語辞書から:
(名詞)広く保持されているが、特定のタイプの人や物の固定され、過度に単純化されたイメージまたはアイデア。
現実の世界では、たとえば、アメリカ人はコーヒーを飲むのが好きなというステレオタイプを知っています。イギリス人はお茶を飲むのが好きです。もちろん、それはすべてのアメリカ人やイギリス人に当てはまるわけではありません。それはアメリカ人やイギリス人の単純化しすぎです。
ステレオタイプを使用すると、より迅速な決定を下すのに役立ちます。アメリカ人の友達がやってきたとき、「何を飲みたいですか?」と尋ねるのではなく。そして彼らの応答を待ちます。あなたは彼らがコーヒーを欲していると仮定することができます。
Springでは、ステレオタイプはオブジェクトの作成を簡素化するのに役立ちます。Type
のステレオタイプを作成するため、間の関係を定義する必要はありませんType
。
注:Type
Javaの場合。クラスはType
です。
次のクラスがあるとします。
public abstract class Friend {
public abstract String favoriteDrink();
}
public class American extends Friend {
@Override
public String favoriteDrink() {
return "Coffee";
}
}
ステレオタイプなし
構成でFriendとAmerican(Friend is-American)の関係を定義する必要があります。
@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";
}
}
If your classes encounter a Friend class, it will assume its an American. It's a one-to-one relationship between Friend and American.
This is very useful if you want your class to behave that way. You don't need to define a Bean to your Configuration file. (You don't even need a Configuration file). Spring will automatically create a Bean from that Stereotype.
That is why the Component, Repository, Service, and Controller annotations belong to Stereotype package.
Spring doesn't care much about the detail of your class, from Spring perspective your Classes are either Repository
, Service
, and Controller
, if it doesn't belong to any of that, then its a Component
.
Spring just making oversimplification of your Classes. Hence, the name Stereotype.