英文:
Why EntityScan , EnableJpaRepositories annotations required if we are already using componentScan annotation?
问题
我已经在Spring Boot应用的Main类中使用了ComponentScan注解,但如果我只使用这个注解,那在获取存储库引用时会出现问题。因此,为了解决这个问题,我正在使用EntityScan和EnableJpaRepositories这两个注解与ComponentScan一起使用。
@EntityScan(basePackages={"com.gonkar.fleetms.models"})
@EnableJpaRepositories(basePackages={"com.gonkar.fleetms.repositories"})
所以我的问题是,为什么需要使用另外两个注解?如果我已经在使用@ComponentScan了。
英文:
I am already using ComponentScan annotation in Main class of Spring Boot app , but If I use only this annotation it will gives issue while getting repositories reference. So to overcome this I am using EntityScan and EnableJpaRepositories annotations with componentScan.
@EntityScan(basePackages={"com.gonkar.fleetms.models"})
@EnableJpaRepositories(basePackages={"com.gonkar.fleetms.repositories"})
So my question is why its required to use other two annotations? if I am already using @ComponentScan.
答案1
得分: 12
@ComponentScan注解用于为被标注为@Component、@Controller / @RestController、@Service、@Repository的类创建Bean。它将它们标记为要添加到Spring容器中(使它们有资格进行依赖注入并允许它们被@Autowired)。
@EntityScan注解不会创建任何Bean,它标识哪些类应该被JPA持久化上下文使用。
@EnableJpaRepositories注解用于从Spring Data接口创建存储库类。
这三个注解经常一起使用,但它们负责不同的事情。
英文:
The @ComponentScan annotation is used to create beans for classes annotated with @Component, @Controller / @RestController, @Service, @Repository. It marks them for being added to the Spring container (making them eligible for dependency injection and allowing them to be @Autowired).
The @EntityScan annotation doesn't create any beans, it identifies which classes should be used by a JPA persistence context.
The @EnableJpaRepositories annotation is used to create repository classes from Spring Data interfaces.
All three annotation are often used together, but they are responsible for different things.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论