Привет, я использую Spring Data с 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>{
}
Это работает как талисман, но позже я создаю сервис GTule, который также использует genericDAO.
@org.springframework.stereotype.Service
@Transactional
public class VehiculeServiceImpl implements VehiculeService<Vehicule> {
@Autowired
private GenericDao<T> genericDao;
@Override
public T save(final T entity){
return genericDao.save(entity);
}
}
Этоработает также как шарм, так в чем же проблема, верно?
Оба класса используют GenericDao, который я не использую в качестве примечания Spring, и в конфигурации я использую
@EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class})
И я вижуgenericDao как Spring управляемый bean-компонент в моей конфигурации, поэтому 2 вопроса:
1).Почему GenericDao является управляемым компонентом в моем контексте?Является ли расширение CrudRepository, но CrudRepository является @NoRepositoryBean?Если я не расширяю интерфейс CrudRepository, мой класс больше не будет компонентом.
2).Почему я могу хранить ГИБДД в своем приложении, даже если не указал ничего кроме UserDao в @EnabledJpaRepositories?
UserDao ---> com.company.dao.UserDao GenericDao -> com.company.dao.abstraction.GenericDao
Если я скажу
@EnableJpaRepositories(basePackageClasses = {com.company.dao.UserDao.class})
Он будет искать где?
Извините, если вопрос простой, это тот самый раз, когда я использую Spring Data с нуля.
Большое спасибо.