@EntityScan 和@ComponentScan 的区别
Difference between @EntityScan and @ComponentScan
我想了解这里的区别。我看到 class 已经用相同的包示例对它们进行了注释:
@Configuration
@EntityScan("some.known.persistence")
@ComponentScan({ "some.known.persistence"})
public class ApiConfig {
}
我了解与 API 文档的区别,但想详细了解。这是否也意味着 @ComponentScan
扫描的任何内容在 Spring 上下文中具有更广泛的可见性,而 @EntityScan
则没有。如果这样的话,使用带有 @ComponentScan
的某些属性应该足以满足在 JPA 上下文中绑定的需要,不是吗?
@ComponentScan
注解用于为每个class注解@Component
、@Service
、@Controller
、@RestController
自动创建bean , @Repository
, ... 并将它们添加到 Spring 容器中(允许它们成为 @Autowired
)。
另一方面,据我所知,@EntityScan
不会创建 bean。它仅标识特定持久性上下文应使用哪些 classes。自 Spring 启动包含 JPA、MongoDB、neo4j、Cassandra 和 CouchBase 的 1.4。
为什么不合并?好吧,我不在Spring队,但既然它们有不同的含义,为什么要合并呢? @EntityScan
应该主要用来扫描你的实体包,而@ComponentScan
应该扫描所有包含Spring个bean的包,所以下面很可能是:
@ComponentScan("org.example.base")
@EntityScan("org.example.base.entities")
public class MyConfig {
}
我们也可以使用@EntityScan
从外部jar中定义一些实体。
我想了解这里的区别。我看到 class 已经用相同的包示例对它们进行了注释:
@Configuration
@EntityScan("some.known.persistence")
@ComponentScan({ "some.known.persistence"})
public class ApiConfig {
}
我了解与 API 文档的区别,但想详细了解。这是否也意味着 @ComponentScan
扫描的任何内容在 Spring 上下文中具有更广泛的可见性,而 @EntityScan
则没有。如果这样的话,使用带有 @ComponentScan
的某些属性应该足以满足在 JPA 上下文中绑定的需要,不是吗?
@ComponentScan
注解用于为每个class注解@Component
、@Service
、@Controller
、@RestController
自动创建bean , @Repository
, ... 并将它们添加到 Spring 容器中(允许它们成为 @Autowired
)。
另一方面,据我所知,@EntityScan
不会创建 bean。它仅标识特定持久性上下文应使用哪些 classes。自 Spring 启动包含 JPA、MongoDB、neo4j、Cassandra 和 CouchBase 的 1.4。
为什么不合并?好吧,我不在Spring队,但既然它们有不同的含义,为什么要合并呢? @EntityScan
应该主要用来扫描你的实体包,而@ComponentScan
应该扫描所有包含Spring个bean的包,所以下面很可能是:
@ComponentScan("org.example.base")
@EntityScan("org.example.base.entities")
public class MyConfig {
}
我们也可以使用@EntityScan
从外部jar中定义一些实体。