You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目创建xmlViewResolver Bean报错求助

解决XmlViewResolver Bean创建失败的问题

嘿,我看了你的配置和代码,发现几个会导致xmlViewResolver Bean创建失败的问题,咱们一步步来解决:

1. 错误的Bean初始化递归调用

你在xmlViewResolver()方法里注释掉的xmlViewResolver().setOrder(1);是个大坑——如果放开这条代码,会让Spring在初始化Bean时无限递归调用这个方法,直接引发栈溢出或Bean创建失败。正确的做法是直接用当前创建的resolver实例设置优先级:

修改后的xmlViewResolver Bean配置:

@Bean
public XmlViewResolver xmlViewResolver(){
    XmlViewResolver resolver = new XmlViewResolver();
    // 这里先保留原资源路径,后面会修正路径问题
    Resource resource = new ServletContextResource(servletContext, "/WEB-INF/Spring/views.xml");
    resolver.setLocation(resource);
    resolver.setOrder(1); // 直接用当前实例设置优先级,避免递归
    return resolver;
}

2. Views.xml存在无效的嵌套beans标签

你的views.xml里嵌套了两层<beans>标签,这完全不符合Spring XML配置规范,XML解析器会直接报错。得把内层多余的<beans>标签删掉:

修改后的views.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="welcome" class="org.springframework.web.servlet.view.JstlView">
        <property name="url" value="/WEB-INF/views/xml_welcome.jsp" />
    </bean>
</beans>

3. 资源路径错误:ClassPathResource无法访问WEB-INF目录

ClassPathResource是从类路径(比如src/main/resources)加载资源的,而/WEB-INF不在类路径范围内,所以用它找不到/WEB-INF/Spring/views.xml。你需要改用ServletContextResource来访问Web应用根目录下的资源,同时要在配置类里注入ServletContext:

更新后的WebMvcConfig类:

@Configuration
@ComponentScan
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private ServletContext servletContext; // 注入ServletContext

    // 其他方法(addResourceHandlers、configureDefaultServletHandling等)保持不变

    @Bean
    public XmlViewResolver xmlViewResolver(){
        XmlViewResolver resolver = new XmlViewResolver();
        // 使用ServletContextResource访问WEB-INF下的配置文件
        Resource resource = new ServletContextResource(servletContext, "/WEB-INF/Spring/views.xml");
        resolver.setLocation(resource);
        resolver.setOrder(1); // 设置最高优先级,比jspViewResolver的默认优先级(Integer.MAX_VALUE)更高
        return resolver;
    }
}

4. 确认视图文件存在

最后别忘了检查/WEB-INF/views/xml_welcome.jsp这个文件是否真的存在,否则即使Bean创建成功,视图解析阶段也会报错。

把这些问题都修复后,重启应用应该就能解决xmlViewResolver Bean创建失败的问题了。

内容的提问来源于stack exchange,提问作者Aubrey.t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:36:45