java - 考虑在你的配置中定义一个“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 并且应用程序应该运行
解决方案
1)添加@Repository
注解,以便将 DAO 作为 bean 加载到 spring 上下文中:
@Repository
public class UserDAO implements IUserDAO{
2)就在旁边..您很可能也应该EntityManager
在其中注入:
@PersistenceContext
private EntityManager em;
推荐阅读
- python - 根据来自另一个数据框的多列条件创建多列
- debugging - Valgrind 报告与我的程序无关的泄漏
- ios - 在应用启动时呈现不同的 UIViewController
- javascript - 使用日期函数获取数据
- html - 上传到服务器后,HTML 网站找不到我的 PNG 图像
- php - 使用 Xampp 找不到对象
- tensorflow - 如何计算CNN模型训练过程的总运行时间
- javascript - 与本地 SQL Server 实例的直接 HTML/JS 连接
- rest - API 令牌认证 - 安全问题
- javascript - 如何使用隐式授权流获取应用程序请求授权