Différence entre @EntityScan et @ComponentScan
j'essaie de comprendre la différence ici. Je vois qu'une classe a été annoté avec deux d'entre eux avec le même exemple de forfait :
@Configuration
@EntityScan("some.known.persistence")
@ComponentScan({ "some.known.persistence"})
public class ApiConfig {
}
je comprends les différences avec API docs mais je veux les comprendre en détail. Cela signifie aussi que tout ce qui est scanné par @ComponentScan
a une plus grande visibilité dans le contexte du printemps et @EntityScan
ne fonctionne pas. Si donc, en utilisant un attribut @ComponentScan
aurait dû suffire le besoin de lier dans un contexte JPA, n'est-ce pas?
2 réponses
@ComponentScan
annotation est utilisée pour créer automatiquement des haricots pour chaque classe annotée avec @Component
, @Service
,@Controller
,@RestController
,@Repository
,... et les ajoute au conteneur à ressort (leur permettant d'être @Autowired
).
@EntityScan
d'un autre côté ne crée pas des haricots autant que je sache. Elle identifie uniquement les classes qui devraient être utilisées dans un contexte de persistance spécifique. Depuis la botte de printemps 1.4 qui comprend JPA, MongoDB, neo4j, Casscandra et CouchBase.
Pourquoi ils ne sont pas fusionnées? Je ne suis pas un développeur, mais je pense qu'ils ont des significations différentes, alors pourquoi le devraient-ils? @EntityScan
devrait principalement être utilisé pour scanner vos paquets entity, alors que le @ComponentScan
devrait balayer tous les paquets qui contiennent des haricots de printemps, de sorte que ce qui suit est très probable:
@ComponentScan("org.example.base")
@EntityScan("org.example.base.entities")
public class MyConfig {
}
@EntityScan
est un deprecated annotation utilisée pour identifier les entités JPA, c.-à-d. Les classes persistantes, du point de vue de la base de données.
Vous utilisez @ComponentScan
rechercher des composants, du point de vue du ressort, c'est-à-dire des classes(aussi connues sous le nom de Java Beans) annoté avec @Component
, @Service
,@Repository
,@Controller
... Il s'agit de composants de ressorts ajoutés au conteneur IoC.