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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考虑在配置中定义类型为“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();
    }

}

- UserDAO

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并且app应该运行

答案

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

@Repository
public class UserDAO implements IUserDAO{

2)只是侧面..你应该最有可能注入EntityManager

@PersistenceContext
private EntityManager em;

以上是关于考虑在配置中定义类型为“com.gisapp.gisapp.dao.IUserDAO”的bean的主要内容,如果未能解决你的问题,请参考以下文章

考虑在你的配置中定义一个 'org.springframework.security.authentication.AuthenticationManager' 类型的 bean

考虑在您的配置中定义一个“服务”类型的 bean [Spring boot]

考虑在你的配置中定义一个“javax.persistence.EntityManager”类型的bean

错误:未为颤振中的“FirebaseMessaging”类型定义“配置”方法

为啥没有为不同的返回类型定义方法重载?

Eclipse 问题 - 编译期间不考虑在 .c 和 .cpp 文件中定义的预处理