2016-07-14 53 views
1

我刚刚使用Spring Boot V1.3.5设置了一个新项目,并且在尝试将存储库自动装入到服务中时不断收到NoSuchBeanDefinitionException异常。这很奇怪,因为我有其他项目设置相同的方式工作正常。将NoSuchBeanDefinitionException存储库投入服务

我的应用程序类。

package api; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 

     System.out.println("-------------------"); 
     System.out.println("The API is running."); 
     System.out.println("-------------------"); 
    } 
} 

我的服务。

package api.services; 

import api.entity.Project; 
import api.repository.ProjectRepository; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 

@Service 
public class ProjectService { 

    @Autowired 
    private ProjectRepository projectRepository; 

    /** 
    * Saves a project entity into the database. 
    * 
    * @param project Project 
    * @return Project 
    */ 
    public Project save(Project project) { 

     return this.projectRepository.save(project); 
    } 
} 

我的存储库。现在

package api.repository; 

import api.entity.Project; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface ProjectRepository extends CrudRepository<Project, Integer> { 

    Project findByName(String name); 
} 

我的服务被自动连接到我的控制器,但春天似乎并不喜欢我出于某种原因库。

任何人都可以看到什么是错的/失踪?

感谢。

异常消息是:

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private api.repository.ProjectRepository api.services.ProjectService.projectRepository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [api.repository.ProjectRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
+0

你有任何具体的实现你的ProjectRepository?它不能仅实例化一个接口。 – Gandalf

+0

当然,你不能实例化一个接口,但我没有实例化它,我自动装配它。我在不同的项目中具有相同的设置,并且工作正常。从文档“但是这正是Spring Data JPA如此强大的原因:您不必编写一个存储库接口的实现。当您运行应用程序时,Spring Data JPA即时创建实现。” –

+0

我试着创建一个类似的示例项目,这是可用[这里](https://github.com/vamsilp/testProjects.git),它为我工作。请公开项目实体类,因为我猜测中的方法签名ProjectRepository可能不正确。 –

回答

0

尝试@Component代替@Repository。

+0

尝试过但仍然是同样的问题。我认为所有的刻板印象都是通过组件扫描获得的,无论其类型如何? –

0

好吧,检查其他设置相同方式的项目。首先,我注意到你已经使用了spring数据jpa,所以注释@Repository无需接口,因为spring boot会自动扫描它。最后,我认为你需要看到这个与你具有相同配置的项目。 spring-boot-sample-data-jpa

+0

这是我做的第一件事。我也试过没有@Repository注释,问题仍然存在。谢谢,我会看看。 –

+0

如果您的软件包不是默认的扫描包,请尝试为SpringBootRunner添加@EnableJpaRepositories(“您的包的dao”)。 –

+0

我已经试过了,它没有工作。这不应该是必要的,因为我的存储库包是我的api包的一部分。 –