英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论