framework example anotaciones spring-boot spring-annotations spring-4 java-annotations

spring-boot - example - spring boot annotations



Diferencia entre @EntityScan y @ComponentScan (2)

Estoy tratando de entender la diferencia aquí. Veo que una clase ha sido anotada con ambos con el mismo ejemplo de paquete:

@Configuration @EntityScan("some.known.persistence") @ComponentScan({ "some.known.persistence"}) public class ApiConfig { }

Entiendo las diferencias de los documentos API, pero quiero entender en detalle. También significa que todo lo que se @ComponentScan con @ComponentScan tiene una mayor visibilidad en el contexto Spring y que no lo hace @EntityScan . Si es así, el uso de algún atributo con @ComponentScan debería haber bastado con la necesidad de enlazar en un contexto JPA, ¿no es así?


La anotación @ComponentScan se utiliza para crear beans automáticamente para cada clase anotada con @Component , @Service , @Controller , @RestController , @Repository , ... y los agrega al contenedor Spring (permitiéndoles estar @Autowired ).

El @EntityScan por otra parte no crea beans por lo que sé. Solo identifica qué clases deben ser utilizadas por un contexto de persistencia específico. Desde Spring boot 1.4 que incluye JPA, MongoDB, neo4j, Casscandra y CouchBase.

¿Por qué no se fusionan? Bueno, no soy un desarrollador, pero supongo que tienen diferentes significados, ¿por qué deberían hacerlo? El @EntityScan debe @EntityScan principalmente para escanear los paquetes de su entidad, mientras que el @ComponentScan debe escanear todos los paquetes que contienen Spring beans, por lo que es muy probable que lo siguiente:

@ComponentScan("org.example.base") @EntityScan("org.example.base.entities") public class MyConfig { }


@EntityScan es una anotación obsoleta que se utiliza para identificar entidades JPA, es decir, clases persistentes, desde el punto de vista de la base de datos.

Utiliza @ComponentScan para buscar componentes, desde un punto de vista de Spring, es decir, clases (también conocidas como Java Beans ) anotadas con @Component , @Service , @Repository , @Controller ... Estos son componentes de Spring agregados al contenedor IoC .