SSM集成shiro報錯如下:
嚴重: Exception starting filter shiroFilter
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'shiroFilter' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:694)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1168)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:281)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:962)
at org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:324)
at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:235)
仔細檢查web.xml和spring-shiro.xml發現shiroFilter並沒有錯誤。
排除配置文件shiroFilter不匹配的因素。
那就是shiro.xml沒有加載的原因。
檢查發現:
web.xml兩處配置context-param
<context-param>
<description></description>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/applicationContext.xml,
classpath:config/spring-mvc.xml,
classpath:config/spring-shiro.xml,
</param-value>
</context-param>
<!-- spring啓動監聽器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 1.修改 spring 配置文件路徑 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/applicationContext.xml;
</param-value>
</context-param>
並且以下面的context-param爲準,這樣sprign-shiro.xml就沒有生效。
單一配置解決問題。