spring-boot – @EntityScan和@ComponentScan之间的区别

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

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

}

我理解与API文档的不同之处,但希望详细了解.这也意味着@ComponentScan扫描的任何内容都具有更广泛的可见性和Spring上下文,而@EntityScan则没有.如果是这样,使用@ComponentScan的某个属性应该足以满足在JPA上下文中绑定的需要,不是吗?

最佳答案
@ComponentScan注释用于为每个使用@ Component,@ Service,@ Controller,@ RestController,@ Repository注释的类自动创建bean,并将它们添加到Spring容器中(允许它们为@Autowired).

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

为什么他们没有合并?好吧,我不是开发人员,但我的猜测是他们有不同的含义,为什么他们呢? @EntityScan应主要用于扫描实体包,而@ComponentScan应扫描包含Spring bean的所有包,因此以下内容很可能:

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

}

转载注明原文:spring-boot – @EntityScan和@ComponentScan之间的区别 - 代码日志