SpringMVC+Spring+Mybatis 环境搭建问题记录(注解开发)

原创 2015年07月08日 21:34:26

Exception:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'itemsController1': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.yrsoft.service.ILoginService com.yrsoft.controller.ItemsController1.service; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.yrsoft.dao.UserDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(mappedName=, shareable=true, description=, name=, type=class java.lang.Object, lookup=, authenticationType=CONTAINER)}

解决办法:web.xml中没有添加监听。加上如下代码:

<listener>  
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  </listener> 


Exception:UserDao无法注入到Service中
解决办法:没有将mapper和Dao关联起来。在spring的xml中添加如下代码:

<!-- 配置 mybatis的映射器 方式二:也可不指定特定mapper,而使用自动扫描包的方式来注册各种Mapper ,配置如下:-->   
	 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">       
     	 <property name="basePackage" value="com.yrsoft"/>   
     	 <property name="sqlSessionFactory" ref="sqlSessionFactory" />
		 <property name="annotationClass" value="org.springframework.stereotype.Component" />  
     </bean>

Exception:文件不存在:WEB-INF/applicationContext.xml

解决办法:一看好像是因为spring的xml路径不对。第一时间检查路径,文件是存在WEB-INF/classes/目录下的。而配置文件中也写的是classpath:applicationContext.xml。找了半天发现,加载文件写到servlet中去了。错误的地方应该写加载springmvc.xml的。而少了加载applicationContext.xml的配置。

错误配置:

<!-- Spring 前端控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- contextConfigLocation配置springMVC加载的配置文件(配置处理器、映射器、适配器等) -->
  	<!-- 默认加载/WEB-INF/SERVLET名称-servlet.xml(springmvc-servlet.xml) -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:applicationContext.xml</param-value>
  	</init-param>
  </servlet>

正确配置:加上了context-param标签,并将applicationContext.xml移动到了该标签中加载。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- Spring 前端控制器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- contextConfigLocation配置springMVC加载的配置文件(配置处理器、映射器、适配器等) -->
  	<!-- 默认加载/WEB-INF/SERVLET名称-servlet.xml(springmvc-servlet.xml) -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc.xml</param-value>
  	</init-param>
  </servlet>

Exception:org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driver}'

出现这个问题的时候,发现是properties文件中的内容没有加载进来,第一时间确认了一下properties文件确实有引入到xml中,后来网上查找资料发现,说是因为MyBatis使用自动扫描包的方式来注册各种Mapper,导致那个引入可能会失效。解决办法是修改一下扫描那里的配置。


会导致引入文件失效的配置方法:

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">       
     	 <property name="basePackage" value="com.yrsoft"/>   
     	 <property name="sqlSessionFactory" ref="sqlSessionFactory" />
	 <property name="annotationClass" value="org.springframework.stereotype.Component" />  
</bean>

mybatis-3.1.0版本以上使用以下解决方式

正确的配置方法:第二个配置那里,sqlSessionFactory变成sqlSessionFactoryBeanName,并且使用value的方式,指向sqlSessionFactory

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">       
     	 <property name="basePackage" value="com.yrsoft"/>   
     	 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
         <property name="annotationClass" value="org.springframework.stereotype.Component" />  
</bean>



spring mvc搭载mybatis精简实例配置文件

spring-mvc.xml: xml version="1.0" encoding="UTF-8"?> beans xmlns="http://www.springframework.or...
  • ranjio_z
  • ranjio_z
  • 2017年01月28日 22:52
  • 310

【JAVA秒会技术之随意切换数据库】Spring如何高效的配置多套数据源

Spring如何高效的配置多套数据源     真正的开发中,难免要使用多个数据库,进行不同的切换。无论是为了实现“读写分离”也好,还是为了使用不同的数据库(“MySQL”或“Oracle”或“SQLS...
  • qq296398300
  • qq296398300
  • 2017年01月21日 17:44
  • 591

MyBatis-Spring配置简单了解

MyBatis-Spring配置简单了解SqlSessionFactoryBean配置在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创...
  • isea533
  • isea533
  • 2015年05月11日 11:10
  • 46999

深入浅出Mybatis-与Spring集成

单独使用mybatis是有很多限制的(比如无法实现跨越多个session的事务),而且很多业务系统本来就是使用spring来管理的事务,因此mybatis最好与spring集成起来使用。 本文通过循序...
  • hupanfeng
  • hupanfeng
  • 2014年03月18日 13:48
  • 100903

springmvc+spring+mybatis集成框架的环境搭建

姊妹篇: struts2+spring4+hibernate4集成框架的环境搭建 http://blog.csdn.net/ironali/article/details/50737838 经典的三大...
  • chaojidora
  • chaojidora
  • 2016年02月25日 16:44
  • 3265

【项目管理】之springMVC+spring+Mybatis环境搭建

最近一直在纠结是用hibernate还是用mybatis,本着让开发人员更好的上手而且不太复杂的原则,我就在思考:单就上手而言,两个框架都差不多,上手都很容易。另外一个能说服的理由是,mybatis比...
  • huanjileaimeidan
  • huanjileaimeidan
  • 2016年02月25日 14:39
  • 1161

Spring Boot 实践折腾记(三):三板斧,Spring Boot下使用Mybatis

你要搞清楚自己人生的剧本:不是你父母的续集,不是你子女的前传,更不是你朋友的外篇。对待生命你不妨大胆冒险一点,因为好歹你要失去它。——尼采...
  • mickjoust
  • mickjoust
  • 2016年06月12日 18:33
  • 65080

使用context:property-placeholder载不进属性原因分析与解决方案

我用spring3.0.6+mybatis3.0.6+mybatis-spring1.0.2做了一个demo,我把数据库连接驱动放在src下,但是我在spring配置文件中加上 ,dataSource...
  • lklinkang
  • lklinkang
  • 2012年12月17日 23:32
  • 24440

SpringMVC+Spring+MyBatis的demo

最近学习SpringMVC与Mybatis,在此做一个demo来加强学习。 主要用了Spring MVC与Mybatis,具体如下: Java&IDE: JDK8 EclipseBackend: ...
  • qq_25954159
  • qq_25954159
  • 2015年11月11日 17:18
  • 576

maven搭建springmvc+spring+mybatis实例

http://blog.csdn.net/qyl445/article/details/9837579 最近做了个maven管理的springmvc+spring+mybatis,还用到了阿里巴...
  • hhhuuu2020
  • hhhuuu2020
  • 2016年04月04日 20:06
  • 370
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SpringMVC+Spring+Mybatis 环境搭建问题记录(注解开发)
举报原因:
原因补充:

(最多只允许输入30个字)