在SSM框架中,我遇到过的一些问题及其解决方法,以后如果还遇到问题会继续跟新。
SSM框架——常见问题及解决方案(2)
一、
问题描述
Could not open ServletContext resource [/WEB-INF/Dispatcher-servlet.xml]
解决方案
- 注意< param-name>里的值必须是 contextConfigLocation
- 添加< init-param>< /init-param>的内容(否则默认在/WEB-INF/下)
如图:resources文件为classpath
<!-- SpringMVC的前端控制器,拦截所有请求 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--配置服务器启动后立即加载Spring MVC配置文件-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
二、
问题描述
Error:Cannot build artifact ‘ghostPlanner:war exploded’ because it is included into a circular dependency
解决方案
项目重命名之后有可能会出现这种问题,只要删除多余的Artifact即可。
三、
问题描述
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
解决方案
1、Mapper.xml和Mapper.java的名称是否一致,是否在同一个包下面
2、mapper.xml的namespace配置是否准确
3、mapper.java中的方法是否都存在于mapper.xml中
4、mapper.xml里< select>元素是否正确配置了ResultMap或ResultType (< select>元素详解)
5、mapper的xml路径是否配置正确
6、target目录下是否有mapper对应的xml文件,如果没有,在pom文件中添加如下信息:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
命名错误真的很要命,找半天都找不到哪里写错了,现在都是写了一个名称之后,全部复制粘贴,无论名字多短,真是怕了…
四、
问题描述
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisUtil': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.data.redis.core.StringRedisTemplate' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}
解决方案
这个错误主要是两个原因:
- @Autowired 使用默认类型注入。把@Autowired 改成 @Resource
- applicationContext.xml 配置错误,使用了注解的类不在扫描的包中。
保险一点的做法就是把所有包都扫描,但这样无疑会降低效率。
<context:component-scan base-package = "java.*"/>