我试图了解这里的区别。我看到一个类都用相同的包示例注释了它们:
@Configuration @EntityScan("some.known.persistence") @ComponentScan({ "some.known.persistence"}) public class ApiConfig { }
我了解与API文档的区别,但希望详细了解。这是否也意味着通过@ComponentScanSpring上下文扫描的所有内容都具有更广泛的可见性,而@EntityScan没有。如果是这样,则使用某些属性@ComponentScan应该足以满足在JPA上下文中进行绑定的需求,不是吗?
@ComponentScan
@EntityScan
该@ComponentScan注释用来为每一个注解类自动创建豆类@Component,@Service,@Controller,@RestController,@Repository,…,并将它们添加到Spring容器(允许它们@Autowired)。
@Component
@Service
@Controller
@RestController
@Repository
@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 { }