Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 在SpringMVC中将Bean放入控制器的问题_Java_Spring_Spring Mvc_Controller_Dao - Fatal编程技术网

Java 在SpringMVC中将Bean放入控制器的问题

Java 在SpringMVC中将Bean放入控制器的问题,java,spring,spring-mvc,controller,dao,Java,Spring,Spring Mvc,Controller,Dao,在Spring MVC中,我有一个models.UserDAO类: 此controllers.UserController类: 到目前为止,一切正常:用户通过UserDAO save方法正确地保存在数据库中 现在我实现了另一个控制器。MainController: 在后一个控制器中,我在获取Bean时出错:没有定义[myproject.models.UserDAO]类型的合格Bean 我得到豆子的方式可能是错误的吗 _appContext.getBean(UserDAO.class); 编辑

在Spring MVC中,我有一个models.UserDAO类:

此controllers.UserController类:

到目前为止,一切正常:用户通过UserDAO save方法正确地保存在数据库中

现在我实现了另一个控制器。MainController:

在后一个控制器中,我在获取Bean时出错:没有定义[myproject.models.UserDAO]类型的合格Bean

我得到豆子的方式可能是错误的吗

_appContext.getBean(UserDAO.class);
编辑

我试图在我的JavaConfig中添加以下内容:

@Bean
public UserDAO userDao(){
  return new UserDAO();
}
我用UserDAO注入替换了自动连接的ApplicationContext\u appContext:

@Autowired
private UserDAO userDao;
但现在我得到了这个错误:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private myproject.models.UserDAO myproject.controllers.MainController.userDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [myproject.models.UserDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
您是否在beans.xml或等效的JavaConfig类中设置了UserDAO类,这取决于您在应用程序中使用的类

为什么不将UserDAO实例本身注入控制器?在我看来,您当前正在应用服务定位器反模式


您可以在这里找到更多信息:在我尝试您的建议的第一篇文章中签出我的编辑。@andre我希望包扫描正常,并且两个控制器位于同一个控制器内package@ankur-辛格哈尔,谢谢,如何检查包扫描是否正常?我使用的是Spring Boot和JavaConfig,因此我没有context.xml文件。您可以发布Spring配置的外观吗?请参见此处:
@Bean
public UserDAO userDao(){
  return new UserDAO();
}
@Autowired
private UserDAO userDao;
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private myproject.models.UserDAO myproject.controllers.MainController.userDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [myproject.models.UserDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}