@EntityScan和@ComponentScan之间的区别

Rag*_*eer 43 spring-annotations spring-boot spring-4 java-annotations

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

g00*_*00b 46

@ComponentScan注释用于自动创建带注释每个类豆类@Component,@Service,@Controller,@RestController,@Repository,...,并将它们添加到Spring容器(允许它们@Autowired).

@EntityScan另一方面,不据我所知创建豆类.它仅标识特定持久性上下文应使用哪些类.从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 {

}
Run Code Online (Sandbox Code Playgroud)