Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}_Java_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java 注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

Java 注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)},java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,当我运行此代码时,它显示了此类错误: org.springframework.beans.factory.BeanCreationException:创建名为“roomController”的bean时出错:自动连线依赖项的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动关联字段:com.Room.Dao.RoomDao com.Room.Controller.RoomController.RoomDao

当我运行此代码时,它显示了此类错误:

org.springframework.beans.factory.BeanCreationException:创建名为“roomController”的bean时出错:自动连线依赖项的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动关联字段:com.Room.Dao.RoomDao com.Room.Controller.RoomController.RoomDao;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[com.Room.Dao.RoomDao]的符合条件的bean:应至少有1个bean符合此依赖项的autowire候选项的条件。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

如何解决此错误

控制器:

@RestController
@RequestMapping("/service/user/")
public class RoomController {

@Autowired
RoomDao roomDao;

@RequestMapping(method = RequestMethod.GET,headers="Accept=application/json")
public String getAllUsers() {
    String users="hello welcome";
    return users;
}

public List<RoomMembers> getRoomMembers() {
    List<RoomMembers> roomMemberList=roomDao.listMember();
    //User user=userService.getUserById(id);
    return roomMemberList;
}
}
道:

公共接口RoomDao{
公共列表列表成员();
}
DaoImpl:

@Repository
@Transactional
public class RoomDaoImpl implements RoomDao{

@Autowired
private SessionFactory sessionFactory;

@SuppressWarnings("unchecked")
public List<RoomMembers> listMember() {
    List<RoomMembers> roomMemberList= (List<RoomMembers>)  sessionFactory.getCurrentSession().createCriteria(RoomMembers.class).list();
    return roomMemberList;
}

}
@存储库
@交易的
公共类RoomDaoImpl实现了RoomDao{
@自动连线
私人会话工厂会话工厂;
@抑制警告(“未选中”)
公共列表列表成员(){
List roomMemberList=(List)sessionFactory.getCurrentSession().createCriteria(RoomMembers.class).List();
返回roomMemberList;
}
}
XML:


com.Room.Model.RoomMembers
${hibernate.dial}
${hibernate.show_sql}
${hibernate.hbm2ddl.auto}

上下文组件扫描用于扫描类(带注释的)以创建bean

在您的例子中,
roomDao
是一个在初始化时必须创建的bean。但在您的情况下,您只是在扫描控制器,因此只有控制器bean将被创建而不是
com.Room.controller
包之外的其他控件

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


所以要扫描所有带注释的类。然后将创建所有必需的(带注释的)bean,并且
BeanCreationException
将被删除。

大多数时候,当您开发springboot应用程序并在其他类中执行依赖项注入时,您会收到一个错误声明

{@org.springframework.beans.factory.annotation.Autowired(required=true)}
例如,这是因为应用程序的主程序驻留在包中
(com.example.project)

您的其他包具有不同的命名结构,例如

com.example.entites,
com.example.services,
com.example.repositories
因此,您的
(主类)
无法自动找到这些其他包

要解决此问题,您需要做的是将其他包命名为遵循(主)包结构,这样它会自动扫描它们,从而解决错误bean问题

因此,现在我们的包结构必须(重构)和(重命名)如下:

com.example.project.entities
com.example.project.services
com.example.project.repositories
瞧!!!,主类自动扫描所有其他包,因为它位于其文件夹中


不要忘记,(包)是一个文件夹,因此,所有其他(包)都存储在(包)中,因此,它可以很容易地找到其中的其他文件夹。

检查您的dao,可能您的dao不在扫描范围内您正在
com.Room.Controller
中进行组件扫描,你有你的组件吗?你在哪里定义了RoomdaoBean?我在xml文件中没有看到它。
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
com.example.entites,
com.example.services,
com.example.repositories
com.example.project.entities
com.example.project.services
com.example.project.repositories