NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.servlet.view.InternalResourceViewResolver' available
问题描述:
项目中需要配置多个视图解析器,所以使用ContentNegotiatingViewResolver来处理,在其内部设置了FreeMarkerViewResolver 、InternalResourceViewResolver两个视图解析器,同时还有一个默认的defaultViews。
在测试类中,想要获取InternalResourceViewResolver类,会报错说没有定义InternalResourceViewResolver这个bean,找不到。
直接上图上代码:
applicationContext.xml:
<bean id="contentViewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="viewResolvers">
<list>
<bean
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="order" value="1" />
<property name="requestContextAttribute" value="request" />
<property name="cache" value="false" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html; charset=utf-8" />
</bean> <bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
<property name="order" value="2"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
</bean>
</list>
</property>
</bean>
测试类:
String conf = "applicationContext.xml";
ApplicationContext ctx = new ClassPathXmlApplicationContext(conf); InternalResourceViewResolver inter = ctx.getBean(InternalResourceViewResolver.class);
System.out.println("inter: " + inter);
报错信息:
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.servlet.view.InternalResourceViewResolver' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:353)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:340)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1090)
at com.quanwc.blog.controller.UserController.main(UserController.java:39)
原因分析:
ContentNegotiatingViewResolver content = ctx.getBean(ContentNegotiatingViewResolver.class);
System.out.println("content: " + content); //可以获取到ContentNegotiatingViewResolver这个bean InternalResourceViewResolver inter = ctx.getBean(InternalResourceViewResolver.class);
System.out.println("inter: " + inter); //报错,无法获取到InternalResourceViewResolver这个bean
结果:
外部的ContentNegotiatingViewResolver bean可以获取到,但是其内部的InternalResourceViewResolver却无法获取到
原因:
spring在创建ContentNegotiatingViewResolver 的时候,会将InternalResourceViewResolver创建出来,并注入给viewResolvers这个属性; 在这个过程中spring并没有将创建出的InternalResourceViewResolver这个bean对象保存一份到自己的容器中。
也就说说,id为viewResolver的bean只服务于Id为contentViewResolver的这个bean。
我们可以将 InternalResourceViewResolver声明在外部的一个bean中,在ContentNegotiatingViewResolver 内部使用ref对其进行引用: <ref bean="viewResolver2"/>
参考链接:http://blog.sina.com.cn/s/blog_635675db01018miz.html
NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.servlet.view.InternalResourceViewResolver' available的更多相关文章
- spring cloud gateway网关启动报错:No qualifying bean of type 'org.springframework.web.reactive.DispatcherHandler'
网关配置好后启动报错如下: org.springframework.context.ApplicationContextException: Unable to start web server; n ...
- org.springframework.web.servlet.view.InternalResourceViewResolver
http://blog.csdn.net/superdog007/article/details/28857495 我们在controller里面经常这样return一个ModelAndView: r ...
- spring异步执行报异常No qualifying bean of type 'org.springframework.core.task.TaskExecutor' available
最近观察项目运行日志的时候突然发现了一个异常, [2018-04-03 10:49:07] 100.0.1.246 http-nio-8080-exec-9 DEBUG org.springframe ...
- SpringBoot- springboot集成Redis出现报错:No qualifying bean of type 'org.springframework.data.redis.connection.RedisConnectionFactory'
Springboot将accessToke写入Redisk 缓存,springboot集成Redis出现报错 No qualifying bean of type 'org.springframewo ...
- Spring 定时器 No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined(转)
最近项目里面,用了spring的定时任务,一直以来,项目运行的不错.定时器也能正常使用.可是,今天启动项目测试的时候,盯着启动Log看了一阵子,突然间发现,启动的Log中居然有一个异常,虽然一闪而过, ...
- No qualifying bean of type 'org.springframework.scheduling.TaskScheduler' available
2019-07-22 17:59:30,966 [DEBUG] [localhost-startStop-1] [ScheduledAnnotationBeanPostProcessor.java : ...
- No qualifying bean of type [com.shyy.web.service.TreeMapper] found for dependency
异常信息: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.sp ...
- Spring Cloud ZooKeeper集成Feign的坑1,错误:Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration.
错误如下: ERROR 31473 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** A ...
- Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration
https://www.cnblogs.com/EasonJim/p/7546136.html 错误如下: ERROR 31473 --- [ main] o.s.b.d.LoggingFailure ...
随机推荐
- 剪邮票dfs+bfs+组合+结构体
#include<iostream>#include<queue>using namespace std;struct Point{ int x; int y; };queue ...
- SpringMVC框架学习笔记(1)——HelloWorld
搭建SpringMVC框架 1.添加jar包 jsp-api.jar servlet-api.jar jstl.jar commons-logging-1.1.1.jar spring-beans-4 ...
- PHPStorm+PHPStudy新建第一个PHP项目
img { max-width: 100% } 熟悉了.net的编程,偶尔也来客串一下PHP.前几天闲来无事随便加了一个PHP的开发群,入群之后傻眼了,群里有大小各位程工1600多人,所以决定学习一下 ...
- python对象的基本操作代码
基础: #对象.方法() # a=1 # b=a # a=2 # # _a=2423 # # print(a) # print(b) # # print(False and False) # prin ...
- 零基础教你写python爬虫
大家都知道python经常被用来做爬虫,用来在互联网上抓取我们需要的信息. 使用Python做爬虫,需要用到一些包: requests urllib BeautifulSoup 等等,关于python ...
- 用php怎样将图片gif转化为jpg
<?php $input= "link2.gif"; $output='test.jpg' ; $image=imagecreatefromgif($input); imag ...
- 从数据库、代码和服务器对PHP网站Mysql做性能优化
数据库优化是PHP面试几乎都会被问到的事情,也是我们工作中应该注意的事情,当然,如果是小网站无所谓优化不优化,网站访问量大了自然会暴漏数据库的瓶颈,这个瓶颈是各方面问题综合导致的,下面我们来做下数据库 ...
- 解决无限 This file is indented with tabs instead of 4 spaces
File -> Settings -> Editor -> Code Style -> Java -> Tabs and Indents -> Use tab ch ...
- Nodejs+Grunt配置SASS项目自动编译
Nodejs+Grunt配置SASS项目自动编译 早前听说Nodejs和Grunt很强大,特别是用来构建自动化的前端开发,更是强大无比.但一直碍于自己掌握的技术有限,不敢深入,也未曾深入下去.最近在开 ...
- vue初学者
先分享一波福利 vue学习视频 链接:https://pan.baidu.com/s/1ggSfE75 密码:7h2a 1.先安装 webpack vue-cli ...