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

宁可枝头抱香死,何曾吹落北风中。这篇文章主要讲述考虑在配置中定义类型为“com.gisapp.gisapp.dao.IUserDAO”的bean相关的知识,希望能为你提供帮助。
当我启动spring-boot应用程序时,我收到以下消息:

应用程序未能启动
描述:
【考虑在配置中定义类型为“com.gisapp.gisapp.dao.IUserDAO”的bean】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) publicObject 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;


    推荐阅读