Saltar al contenido

¿Qué es un “estereotipo” de primavera?

Posteriormente a consultar con expertos en este tema, programadores de deferentes áreas y maestros hemos dado con la solución al problema y la compartimos en este post.

Solución:

El JavaDoc dice un poco al respecto.

Anotaciones que indican las funciones de los tipos o métodos en la arquitectura general (a un nivel conceptual, más que de implementación).

La definición del sustantivo de stereotype de Merriam-Webster dice esto:

algo conforme a un patrón fijo o general; especialmente: una imagen mental estandarizada que comparten los miembros de un grupo y que representa una opinión demasiado simplificada, una actitud prejuiciosa o un juicio acrítico

Parece que es para sugerir un rol de clase particular que se está anotando. Esto parece tener sentido porque a menudo se recomienda que anote sus clases de controlador con @ControllerClases de servicio con @Servicey así.

Además de la funcionalidad obvia de escaneo de componentes, Spring sugiere que hacen buenas demarcaciones de corte de puntos para sus necesidades de AOP.

¿Es este un término técnico de Spring? ¿O el estereotipo solo se usa en un sentido general?

Creo que Spring toma prestado el término estereotipo del mundo real al término técnico de Spring.

Del diccionario de inglés americano:

(sustantivo) una imagen o idea generalizada pero fija y simplificada de un tipo particular de persona o cosa.

En el mundo real conocemos algunos estereotipos, por ejemplo: a los estadounidenses les gusta tomar café. A los británicos les gusta beber té. Por supuesto, no es true para todos los estadounidenses o británicos. Es solo una simplificación excesiva de los estadounidenses o británicos.

El uso de estereotipos nos ayuda a tomar decisiones más rápidas. Cuando vienen tus amigos estadounidenses, en lugar de preguntarles “¿Qué te gustaría beber?” y esperar su respuesta. Puedes asumir que quieren un café.

En Spring, los estereotipos nos ayudan a simplificar la creación de objetos. No es necesario definir la relación entre Typeporque haces estereotipo de la Type.

Nota: Type en Java. la clase es un Type.


Digamos que tenemos estas clases:

public abstract class Friend 

    public abstract String favoriteDrink();


public class American extends Friend 

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

sin estereotipo

Tienes que definir la relación entre Amigo y Americano (Friend is-an American) en una Configuración.

@Configuration
public class YourAppConfig 

    @Bean
    public Friend defineFriend() 
        return new American();
    

Entonces, en la prueba puedes verificar que:

@RunWith(SpringRunner.class)
@SpringBootTest
public class YourAppTest 

    @Autowired
    private Friend friend;

    @Test
    public void drinkTest() 
        assertEquals(friend.favoriteDrink(), "Coffee");
    

con estereotipo

El estereotipo le dice a Spring que todo amigo es estadounidense, directamente en la declaración de clase.

@Component
public class American extends Friend 

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

Si sus clases se encuentran con una clase Amigo, asumirá que es estadounidense. Es una relación de uno a uno entre Friend y American.

Esto es muy útil si desea que su clase se comporte de esa manera. No necesita definir un Bean en su archivo de configuración. (Ni siquiera necesita un archivo de configuración). Spring creará automáticamente un Bean a partir de ese estereotipo.


Es por eso que las anotaciones de Componente, Repositorio, Servicio y Controlador pertenecen al paquete Stereotype. Spring no se preocupa mucho por los detalles de su clase, desde la perspectiva de Spring, sus clases son Repository, Servicey Controllersi no pertenece a nada de eso, entonces es un Component.

Primavera acaba de hacer simplificación de tus Clases. De ahí el nombre de estereotipo.

Comentarios y calificaciones de la guía

Recuerda que puedes recomendar este post si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *