Java 在SpringMVC中将Bean放入控制器的问题
在Spring MVC中,我有一个models.UserDAO类: 此controllers.UserController类: 到目前为止,一切正常:用户通过UserDAO save方法正确地保存在数据库中 现在我实现了另一个控制器。MainController: 在后一个控制器中,我在获取Bean时出错:没有定义[myproject.models.UserDAO]类型的合格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); 编辑
_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)}