我正在尝试使用@Bean注释配置一个Bean,以便在Spring MVC控制器应用程序中使用。
据我所知,@Bean注释相当于XML配置中的标签。我正在做的事情如下:
具有配置的类
@Configuration
public class ContextConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
但当尝试在MVC控制器中自动连接myBean时,它失败了。
豆子注射剂
@Controller
public class HomeController {
@Autowired
private MyBean myBean;
@RequestMapping({"/", "/home"})
public ModelAndView home (ModelAndView model) {
model.setViewName("home");
return model;
}
}
错误是:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.validation.ValidatorFactory com.proeza.sgs.controller.HomeController.factory; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.validation.ValidatorFactory] 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)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.validation.ValidatorFactory com.proeza.sgs.controller.HomeController.factory; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.validation.ValidatorFactory] 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)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
... 22 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.validation.ValidatorFactory] 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)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1100)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
... 24 more
最终意见
形态:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.myapp.config</param-value>
</context-param>
ContextConfig类位于该包中
知道为什么会这样吗?
感谢您的回复Ilya。你是对的,我粘贴的堆栈不是正确的。原因是为了简化,我用MyBean给出了示例,但我忘记在堆栈中重命名它。
问题已经解决了。MyBean的真实名称是MessageResolver,发生的事情是我在ContextConfig类中已经有了另一个名为MessageResolver的方法,用于为Thymeleaf创建bean。不同的是,我的不接收参数,另一个接收MessageSource,但是...阅读Spring文档我发现了这个:
Spring文档报价:
2.2.6。自定义bean命名
默认情况下,JavaConfig使用@Bean方法的名称作为结果bean的名称。但是,可以使用BeanNamingStrategy扩展点覆盖此功能。
Spring@Bean文档
所以,问题是bean没有被创建,因为它被其定义覆盖了。只需重命名messageResolver方法,错误就会消失。
再次感谢。当做
异常与MyBean类无关。异常说:
No qualifying bean of type [javax.validation.ValidatorFactory] found for dependency
Spring未能将javax.validation.ValidatorFactory注入HomeController类。检查ValidatorFactory类的配置。
我试图创建一个springmvc项目配置与Hibernate使用web.xml 我的问题是,当我运行时,它不会自动创建用户表。 这是我的代码: 文件spring-config.xml 文件web.xml: 文件UserDAO: 文件UserDaoImpl: 文件用户: 这是我的日志:
我试图在我的应用程序中实现jpa 发展能力 所以,我的DataConfig看起来像这样: 但是,当我尝试启动应用程序时,会出现错误消息。制造战争- 已连接到服务器[2018-09-26 09:54:32631]工件未命名:正在部署工件,请稍候。。。2018年9月26日09:54:34.460警告[RMI TCP连接(3)-127.0.0.1]组织。阿帕奇。公猫dbcp。dbcp2。基本资源工厂。g
本文向大家介绍Springmvc restful配置遇到的小坑,包括了Springmvc restful配置遇到的小坑的使用技巧和注意事项,需要的朋友参考一下 首先web.xml配置 url-pattern 配置/即可,如果配置/*的话会出问提,连返回视图jsp也会拦截,具体原因请看翻看源码 问提:这样配置的话,大家都会忽略一个问题,就是a/b/c可以访问,但是a/b/c.do;a/b/c.mm;
本文向大家介绍JSP中springmvc配置validator的注意事项,包括了JSP中springmvc配置validator的注意事项的使用技巧和注意事项,需要的朋友参考一下 SpringMVC介绍之Validation 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证。SpringMVC自身对数据在服务
本文向大家介绍springmvc整合freemarker配置的详细步骤,包括了springmvc整合freemarker配置的详细步骤的使用技巧和注意事项,需要的朋友参考一下 一、对应的导包(有些包是不必须的) 二、在spring配置文件中配置 三、jdbc连接 jdbc.properties 四、log4j配置 与本项目无关的mybatis配置 以上就是本文的全部内容,希望对大家的学习有所帮助
本文向大家介绍springmvc与mybatis集成配置实例详解,包括了springmvc与mybatis集成配置实例详解的使用技巧和注意事项,需要的朋友参考一下 简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求。闲暇时间把项目配置文件共享出来,供大家参看: 1.首先我们来看下依赖的pom: spring 选用的是4.1.4的版本,根据系统需要我们可以
本文向大家介绍SpringMVC文件上传的配置实例详解,包括了SpringMVC文件上传的配置实例详解的使用技巧和注意事项,需要的朋友参考一下 记述一下步骤以备查。 准备工作: 需要把Jakarta Commons FileUpload及Jakarta Commons io的包放lib里。 我这边的包是: commons-fileupload-1.1.1.jar commons-io-1.3.2.
我正在尝试使用Enunciate为我的REST API生成静态文档,该API是使用Spring MVC 3.2用Java编写的。Enuncite网站声称,它通过使用以下特定插件来支持Spring: http://enunciate.codehaus.org/module_spring_app.html 在查看配置选项时,看起来我应该导入一个spring applicationContext.xml