Java Spring Data@EnabledParepositories问题

Java Spring Data@EnabledParepositories问题,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我使用SpringData和Hibernate作为JPA提供程序,并且有一个类,这是一个独立的应用程序,我在这个项目中没有使用Boot @Configuration @ComponentScan(basePackages={basePackages}) @EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class}) public class Company{ 我正在使用这样的UserDao @Reposi

我使用SpringData和Hibernate作为JPA提供程序,并且有一个类,这是一个独立的应用程序,我在这个项目中没有使用Boot

@Configuration
@ComponentScan(basePackages={basePackages})
@EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class})
public class Company{
我正在使用这样的UserDao

@Repository
public interface UserDao extends GenericDao<User>{    
   @Query("query")
   public int findByLoginAndPass(@Param("login") String login,@Param("password") String password);
}

public interface GenericDao<T extends AbstractEntity> extends CrudRepository<T,Integer>{    
}
在我的配置中,我将genericDao视为Spring管理的bean,因此有两个问题:

1) 。为什么GenericDao在我的上下文中是托管bean?扩展crudepository但是crudepository是@NoRepositoryBean吗?如果我不扩展接口crudepository,我的类就不再是bean了

2) 。为什么我可以在我的应用程序中存储车辆,即使我在@enabledparepositories中除了UserDao之外没有任何声明

UserDao--->com.company.dao.UserDao GenericDao-->com.company.dao.abstraction.GenericDao

如果我说

@EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class})
它会在哪里搜索

这是我第一次从头开始使用Spring数据

  • 因为这就是SpringDataJPA的原理:它为扩展存储库的每个扫描接口创建一个bean

  • 因为它与UserDao在同一个包中,您告诉JPA扫描包含UserDao类的包:
    basePackageClasses={com.company.dao.UserDao.class}

  • 因为这就是SpringDataJPA的原理:它为扩展存储库的每个扫描接口创建一个bean

  • 因为它与UserDao在同一个包中,您告诉JPA扫描包含UserDao类的包:
    basePackageClasses={com.company.dao.UserDao.class}


  • 但是包裹是这样的。UserDao-->com.compay.dao,GenericDao是com.company.dao.abstraction,我告诉spring只扫描UserDao.class?因为如果我像这样告诉spring@EnableJpaRepositories(“com.company.dao”),我会理解的,我说它会在包和子包中搜索,但当我说.class时,它会在哪里搜索?不,你没有。阅读basePackageClasses的javadoc。它解释了它的作用(这就是我在回答中所说的)。包裹是这样的。UserDao-->com.compay.dao,GenericDao是com.company.dao.abstraction,我告诉spring只扫描UserDao.class?因为如果我像这样告诉spring@EnableJpaRepositories(“com.company.dao”),我会理解的,我说它会在包和子包中搜索,但当我说.class时,它会在哪里搜索?不,你没有。阅读basePackageClasses的javadoc。它解释了它的作用(这就是我在回答中所说的)。
    @EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class})
    
    @EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class})