Spring数据:无法自动连接@Repository JpaRepository接口:"预计至少有一个bean有资格成为autowire候选者"

时间:2017-11-15 17:07:03

标签: spring spring-mvc spring-data

我的问题几乎与此问题完全相同,但不一样,因为我没有使用Spring Boot。 Can't Autowire @Repository annotated interface in Spring Boot 所以我不能@EnableJpaRepositories在我的情况下没有Spring Boot Runner。我在Web应用程序中有SpringMVC控制器。

我在常规的老式SpringMVC应用程序中独立使用Spring Data。

我收到了错误

Caused by: No qualifying bean of type 'com.myapp.dao.QuestionsDAO' available: 
expected at least 1 bean which qualifies as autowire candidate.

Spring Data的DAO接口,注意@Repository:

@Repository
public interface QuestionsDAO extends JpaRepository<Question, Long> {

    public String findById(Long id);

}

服务应该使用此DAO,自动连接:

组件

public class SchedulingService {

    @Autowired
    QuestionsDAO questionsDAO;

    public String findLabelById(Long id) {

        return questionsDAO.findById(id);

    }

}

已启用组件扫描,适用于其他所有内容。

<context:component-scan base-package="com.myapp" />

春季数据只允许使用Spring Boot吗?

1 个答案:

答案 0 :(得分:1)

注释*****-****-*****-5457 *****-****-*****-*4-D57 *****-****-*****-*4-D;5.7 *****-****-*****-**-g5.37 *******.*********.(*******){*dh i8} ####.####.####.**5D-45 ****.****.****.**5D-45 ** 12 来自Spring Data,它与Spring Boot无关。因此,使用@EnableJpaRepositories@Configuration注释一个类就足够了。

如果您想在XML中执行此操作,则必须添加

@EnableJpaRepositories

您也不需要在界面上使用<jpa:repositories base-package="com.acme.repositories" /> 注释,该注释还有其他用途。