一、錯誤分析?
做品優購項目的運營商安全登錄時,運行項目后,瀏覽器訪問模板頁,模板頁的表格無法正常顯示,報錯信息如下:
SEVERE: StandardWrapper.Throwable
java.lang.IllegalStateException: No ConfigurableListableBeanFactory setat org.springframework.util.Assert.state(Assert.java:73)at org.springframework.context.event.EventListenerMethodProcessor.afterSingletonsInstantiated(EventListenerMethodProcessor.java
:102)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.jav
a:862)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.ja
va:877)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:701)at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:667)at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:715)at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:590)at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:529)at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:169)at javax.servlet.GenericServlet.init(GenericServlet.java:160)at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)
訪問頁面失敗:
?
提取關鍵信息:
java.lang.IllegalStateException: No ConfigurableListableBeanFactory set
根據上述錯誤,可能是因為缺少了ConfigurableListableBeanFactory的配置,定位到springmvc.xml文件
二、代碼修改?
springmvc.xml文件修改前:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:property-placeholder location="classpath:config/application.properties" /><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json"/><property name="features"><array><value>WriteMapNullValue</value><value>WriteDateUseDateFormat</value></array></property></bean></mvc:message-converters> </mvc:annotation-driven><!-- 引用dubbo 服務 --><dubbo:application name="pinyougou-manager-web" /><dubbo:registry address="zookeeper://192.168.25.139:2181"/><dubbo:annotation package="com.pinyougou.manager.controller" /></beans>
?springmvc.xml文件修改后:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.0.xsd"><context:property-placeholder location="classpath:config/application.properties" /><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><property name="supportedMediaTypes" value="application/json"/><property name="features"><array><value>WriteMapNullValue</value><value>WriteDateUseDateFormat</value></array></property></bean></mvc:message-converters></mvc:annotation-driven><!-- 引用dubbo 服務 --><dubbo:application name="pinyougou-manager-web" /><dubbo:registry address="zookeeper://192.168.25.139:2181"/><dubbo:annotation package="com.pinyougou.manager.controller" /><context:annotation-config/>
</beans>
在代碼中添加了
<context:annotation-config/>
,這樣可以確保ConfigurableListableBeanFactory正確配置?
?再次運行代碼,正常訪問頁面
三、 怎么知道代碼改哪里
目前在用chatgpt網站:AIGC+ (aigcplus.io)
把錯誤信息和要修改的代碼貼上,直接問它,“請根據上述錯誤修改下列代碼”,即可得到較為正確的修改方向?
?