什么是春天的“刻板印象”?

Posted

技术标签:

【中文标题】什么是春天的“刻板印象”?【英文标题】:What is a Spring "stereotype"? 【发布时间】:2013-01-23 06:28:06 【问题描述】:

在 SpringSource 博客条目中,以下句子引用了一个刻板印象

因为@Controller 是Spring 的@Component 的特化 刻板印象注释,类会被自动检测到 Spring容器作为容器组件扫描的一部分 进程,创建一个 bean 定义并允许实例 像任何其他 Spring 管理的组件一样注入依赖项。

这个词刻板印象的用法是指什么?这是一个技术性的 Spring 术语吗?还是只是一般意义上的刻板印象?

【问题讨论】:

【参考方案1】:

JavaDoc 说了一点。

表示类型或方法在整体架构中的作用的注释(在概念级别,而不是实现级别)。

来自Merriam-Webster 的stereotype 的名词定义是这样说的:

符合固定或一般模式的东西;尤指:群体成员共同持有的标准化心理图景,代表一种过于简单化的观点、偏见的态度或不加批判的判断

似乎是为了建议正在注释的特定类的角色。这似乎是有道理的,因为通常建议您使用@Controller 注释您的控制器类,使用@Service 注释服务类等等。

除了明显的组件扫描功能外,Spring 建议它们为您的 AOP 需求做出很好的切入点划分。

【讨论】:

我赞成这个答案,因为当我试图理解一个新概念时,这些技术术语与基础概念的关系如何帮助我消化。在 UML 中也存在刻板印象,用于创建可重用 &来自现有元类的可扩展域组件作为模板。【参考方案2】:

这是一个技术性的 Spring 术语吗?还是只是一般意义上的刻板印象?

我认为 Spring 将 Stereotype 一词从现实世界借用为 Spring 的技术术语。

来自美国英语词典:

(名词)对特定类型的人或事物的广泛持有但固定且过于简单的形象或想法。

在现实世界中,我们知道一些刻板印象,例如:美国人喜欢喝咖啡。英国人喜欢喝茶。当然,并非对所有美国人或英国人都是如此。它只是对美国人或英国人的过度简化。

使用刻板印象帮助我们更快地做出决定。当你的美国朋友过来时,不要问他们“你想喝什么?”并等待他们的回应。你可以假设他们想要一杯咖啡。

在 Spring 中,构造型帮助我们简化对象创建。您不需要定义Type 之间的关系,因为您对Type 进行了刻板印象。

注意:Type in 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-an 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");
    

带有刻板印象

Stereotype 直接在 Class 声明上告诉 Spring,所有 Friend 都是美国人。

@Component
public class American extends Friend 

    @Override
    public String favoriteDrink() 
        return "Coffee";
    

如果您的班级遇到 Friend 班级,它将假定它是美国人。这是朋友和美国人之间的一对一关系。

如果您希望您的班级以这种方式行事,这将非常有用。您不需要在配置文件中定义 Bean。 (您甚至不需要配置文件)。 Spring 将自动从该 Stereotype 创建一个 Bean。


这就是为什么 Component、Repository、Service 和 Controller 注释属于 Stereotype 包的原因。 Spring 不太关心你的类的细节,从 Spring 的角度来看,你的类是 RepositoryServiceController,如果它不属于其中任何一个,那么它是 Component .

Spring 只是让你的类过度简化。因此,名称 Stereotype。

【讨论】:

超级!!..@aldok

以上是关于什么是春天的“刻板印象”?的主要内容,如果未能解决你的问题,请参考以下文章

技术宅小伙:对程序员的刻板印象真的是这样嘛?

从《奇葩说》看为什么会有程序员穿格子衫的刻板印象?

3.13ZR模拟赛

WPS2019完全体验指南

Debiasing word embeddings | 浅谈词嵌入除偏 #yyds干货盘点#

调查分析:Java 程序员最伤心,C++ 程序员最年老