Java 自动关联依赖项的注入失败,无法自动关联字段

Java 自动关联依赖项的注入失败,无法自动关联字段,java,spring,autowired,Java,Spring,Autowired,我知道这个问题已经被问了很多次,我冒着双重(或三重或四重)的风险,但提议的解决方案似乎不适合我 我遇到了非常可怕的无法自动连线错误。第一次从零开始建立一个完整的Spring项目,所以我真的不知道问题出在哪里 这是我当前的设置: ProjectRepo: package be.italent.repo; import be.italent.model.Project; import org.springframework.data.jpa.repository.JpaRepository; im

我知道这个问题已经被问了很多次,我冒着双重(或三重或四重)的风险,但提议的解决方案似乎不适合我

我遇到了非常可怕的无法自动连线错误。第一次从零开始建立一个完整的Spring项目,所以我真的不知道问题出在哪里

这是我当前的设置: ProjectRepo:

package be.italent.repo;

import be.italent.model.Project;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProjectRepo extends JpaRepository<Project, Integer> {

}
包be.italent.repo;
导入be.italent.model.Project;
导入org.springframework.data.jpa.repository.JpaRepository;
导入org.springframework.stereotype.Repository;
@存储库
公共接口ProjectRepo扩展了JpaRepository{
}
项目服务:

package be.italent.services;

import be.italent.model.Project;
import be.italent.repo.ProjectRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProjectService {

    @Autowired
    private ProjectRepo projectRepo;

    public List<Project> getAllProjects() {
        return projectRepo.findAll();
    }
}
包be.italent.services;
导入be.italent.model.Project;
导入be.italent.repo.ProjectRepo;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Service;
导入java.util.List;
@服务
公共类项目服务{
@自动连线
私人ProjectRepo ProjectRepo;
公共列表getAllProjects(){
返回projectRepo.findAll();
}
}
ProjectRestController:

package be.italent.controllers;

import java.util.ArrayList;
import be.italent.services.ProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import be.italent.model.Project;

@RestController
@RequestMapping("/projects")
public class ProjectRestController {

    @Autowired
    private ProjectService projectService;

    @RequestMapping(method = RequestMethod.GET, produces="application/json")
    public ArrayList<Project> getProjects(){
        ArrayList<Project> c = (ArrayList<Project>) projectService.getAllProjects();

        return c;
    }
}
包be.italent.controllers;
导入java.util.ArrayList;
导入be.italent.services.ProjectService;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.bind.annotation.RestController;
导入be.italent.model.Project;
@RestController
@请求映射(“/projects”)
公共类ProjectRestController{
@自动连线
私人项目服务项目服务;
@RequestMapping(method=RequestMethod.GET,products=“application/json”)
公共阵列列表getProjects(){
ArrayList c=(ArrayList)projectService.getAllProjects();
返回c;
}
}
spring-mvc.xml

...
<context:component-scan base-package="be.italent"></context:component-scan>
...
。。。
...
错误:

严重:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例时发生异常 org.springframework.beans.factory.BeanCreationException:创建名为“projectRestController”的bean时出错:自动关联依赖项的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动关联字段:private be.italent.services.ProjectService be.italent.controllers.ProjectRestController.ProjectService;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“projectService”的bean时出错:自动连线依赖项的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动关联字段:private be.italent.repo.ProjectRepo be.italent.services.ProjectService.ProjectRepo;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[be.italent.repo.ProjectRepo]的符合条件的bean:应至少有1个bean符合此依赖项的autowire候选项的条件。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)} 位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor.postProcessPropertyValues(AutoWiredNotationBeanPostProcessor.java:292) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:700) 位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068) 位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572) 位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 运行(Thread.java:745) 原因:org.springframework.beans.factory.BeanCreationException:无法自动连接字段:private be.italent.services.ProjectService be.italent.controllers.ProjectRestController
<beans
...
jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

...

<jpa:repositories base-package="be.italent.repo" entity-manager-factory-ref="emf"/>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/data/jpa
           http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

    <!-- Tell Spring Data JPA where your repository interfaces are -->
    <jpa:repositories base-package="be.italent.repo" />

    <!-- ... -->
</beans>
@Configuration
@EnableJpaRepositories("be.italent.repo")
public class MySpringConfiguration {
    // ...
}