我尝试加载上下文,但出现 UnsatisfiedDependencyException 不明白是什么原因,服务中提供了注解和构造函数
DataJpa存储库:
@Transactional(readOnly = true)
public interface DataJpaRepository extends JpaRepository<Visit, Long> {
@Override
@Transactional
Visit save(Visit visit);
Visit findByGuestId(long guestId);
@Query("SELECT DISTINCT v FROM Visit v WHERE v.date BETWEEN :from AND :to")
List<Visit> getBetween(@Param("from") Date from, @Param("to") Date to);
}
@Repository
public class VisitRepositoryImpl implements VisitRepository {
@Autowired
private DataJpaRepository dataJpaRepository;
@Override
public Visit get(long guestId) {
return dataJpaRepository.findByGuestId(guestId);
}
@Override
public Visit save(Visit visit) {
return dataJpaRepository.save(visit);
}
@Override
public List<Visit> getAll() {
return dataJpaRepository.findAll();
}
@Override
public List<Visit> getBetween(Date from, Date to) {
Objects.requireNonNull(from, "fromDate must not be null");
Objects.requireNonNull(to, "toDate must not be null");
return dataJpaRepository.getBetween(from, to);
}
}
访问服务:
@Service
public class VisitService {
private VisitRepositoryImpl repository;
@Autowired
public VisitService(VisitRepositoryImpl repository) {
this.repository = repository;
}
public Visit save(Visit visit) {
return repository.save(visit);
}
public List<Visit> getAll() {
return repository.getAll();
}
public List<Visit> getBetween(Date from, Date to) {
Assert.notNull(from, "fromDate must not be null");
Assert.notNull(to, "toDate must not be null");
return repository.getBetween(from, to);
}
}
我收到以下异常:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'visitService' defined in file [D:\JAVA\library-project\target\classes\com\java\library\service\VisitService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.java.library.repository.VisitRepositoryImpl' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
主类还有:
@EnableJpaRepositories("com.java.library.repository")
@EntityScan("com.java.library.model")
@ComponentScan("com.java.library.service")
@SpringBootApplication
public class LibraryApplication {
public static void main(String[] args) {
SpringApplication.run(LibraryApplication.class, args);
}
}
可能是什么问题?
最佳答案
尝试将存储库包添加到@ComponentScan配置
@ComponentScan({"com.java.library.service", "com.java.library.repository"})
关于java - spring 上下文未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57843581/