首页 > 解决方案 > 考虑在你的配置中定义一个“com.gisapp.gisapp.dao.IUserDAO”类型的bean

问题描述

当我启动我的 spring-boot 应用程序时,我收到以下消息:

应用程序无法启动


描述:

com.gisapp.services.impl.UserService 中的字段 userDAO 需要找不到类型为“com.gisapp.gisapp.dao.IUserDAO”的 bean。

注入点有以下注解: - @org.springframework.beans.factory.annotation.Autowired(required=true)

行动:

考虑在您的配置中定义“com.gisapp.gisapp.dao.IUserDAO”类型的 bean。

我在与此问题相关的其他帖子中读到的是我必须配置注释@ComponentScan,但它不起作用

主要课程:

package com.gisapp.gisapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("com.gisapp")
public class GisappApplication {

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

}

服务等级

@Service
public class UserService implements IUserService {

    @Autowired
    IUserDAO userDAO;

    @Override
    @Transactional(readOnly=true)
    public  Object login() {


        return userDAO.login();
    }

}

- 用户道

package com.gisapp.gisapp.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.gisapp.gisapp.dao.IUserDAO;
import com.gisapp.models.entity.User;

public class UserDAO implements IUserDAO{

    @Override
    public Object login() {

        StringBuilder query = new StringBuilder();

        query.append("SELECT * FROM User");

        EntityManager em = null;
        Query q = em.createNativeQuery(query.toString());

        List<User> result=q.getResultList();

        return result;

    }

}

IUserDAO 应该被识别为 bean 并且应用程序应该运行

标签: javaspringspring-bootjpa

解决方案


1)添加@Repository注解,以便将 DAO 作为 bean 加载到 spring 上下文中:

@Repository
public class UserDAO implements IUserDAO{

2)就在旁边..您很可能也应该EntityManager在其中注入:

@PersistenceContext
private EntityManager em;

推荐阅读