一尘不染

@EntityScan和@ComponentScan之间的区别

spring-boot

我试图了解这里的区别。我看到一个类都用相同的包示例注释了它们:

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

}

我了解与API文档的区别,但希望详细了解。这是否也意味着通过@ComponentScanSpring上下文扫描的所有内容都具有更广泛的可见性,而@EntityScan没有。如果是这样,则使用某些属性@ComponentScan应该足以满足在JPA上下文中进行绑定的需求,不是吗?


阅读 1631

收藏
2020-05-30

共1个答案

一尘不染

@ComponentScan注释用来为每一个注解类自动创建豆类@Component@Service@Controller@RestController@Repository,…,并将它们添加到Spring容器(允许它们@Autowired)。

@EntityScan另一方面,不创建豆类据我所知。它仅标识特定持久性上下文应使用哪些类。从Spring Boot
1.4开始,包括JPA,MongoDB,neo4j,Cassandra和CouchBase。

为什么它们没有合并?好吧,我不在Spring团队中,但是由于它们的含义不同,为什么要将它们合并?本@EntityScan应主要用于扫描你的实体封装,而@ComponentScan应扫描包含Spring
bean的所有包,所以下面很可能是:

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

}
2020-05-30