zoukankan      html  css  js  c++  java
  • java单元测试调用mybatis接口并执行

    今天想使用单元测试类,存储一些数据到mysql,可是,一直在报错,org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'locationService' available

    检查了好久,实属无奈找不出问题,试了一下手动构造注入javabean,奇迹的解决了这个问题。

    单元测试具体写法:

    1.使用注解@Before 读取dao层的xml配置文件,,注意,必须是dao层,否则找不到mybatis的会话工厂

    
    

    2.需要使用构造注入service层的接口实现类后,程序才可以获取mapper接口,,否则mapper接口实例后参数为null,会报空指针异常

     

    3.构造注入的service层实现类 <bean> 必须写在dao层的xml文件里,不可以在其他xml里单独注入再获取Javabean,否则会报错误创建bean。

    当然,如果真的想写在一个新的xml文件里,可以将新xml导入到dao层xml配置文件里。

     

    dao层xml文件模板:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xsi:schemaLocation="http://www.springframework.org/schema/beans
     6     http://www.springframework.org/schema/beans/spring-beans.xsd
     7     http://www.springframework.org/schema/context
     8     http://www.springframework.org/schema/context/spring-context.xsd">
     9     <!-- 1.配置数据库相关参数properties的属性:${url} -->
    10     <context:property-placeholder location="classpath:jdbc.properties"/>
    11 
    12     <!-- 配置 数据源 -->
    13     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    14         <!-- 驱动 -->
    15         <property name="driverClassName" value="${jdbc.driverClassName}"/>
    16         <!-- url -->
    17         <property name="url" value="${jdbc.url}"/>
    18         <!-- 用户名 -->
    19         <property name="username" value="${jdbc.username}"/>
    20         <!-- 密码 -->
    21         <property name="password" value="${jdbc.password}"/>
    22     </bean>
    23 
    24     <!-- 配置 Mybatis的工厂 -->
    25     <bean class="org.mybatis.spring.SqlSessionFactoryBean">
    26         <!-- 数据源 -->
    27         <property name="dataSource" ref="dataSource"/>
    28         <!-- 配置Mybatis的核心 配置文件所在位置 -->
    29         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
    30         <!-- 配置pojo别名 -->
    31         <property name="typeAliasesPackage" value="cn.cen2guo.clinic.entity"/>
    32         <!--当mapper中的接口文件与xml文件在同一个包下但是不在同一级时-->
    33         <!--需要指定mapper 的xml文件路径,如果在同一级则可不写-->
    34         <!-- 否则会报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)-->
    35         <property name="mapperLocations" value="classpath:cn/cen2guo/clinic/mapper/mapperXML/*.xml"/>
    36     </bean>
    37 
    38     <!--扫描mapper接口, 写在此包下即可被扫描到 -->
    39     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    40         <property name="basePackage" value="cn.cen2guo.clinic.mapper"/>
    41     </bean>
    42 
    43 
    44     <!--    导入my_javabean.xml,用于自定义注册构造注入的bean-->
    45     <import resource="classpath:myxml/my_javabean.xml"/>
    46 </beans>
    View Code

    自定义注册bean的xml文件模板:

    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <beans xmlns="http://www.springframework.org/schema/beans"
    3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4        xsi:schemaLocation="http://www.springframework.org/schema/beans
    5     http://www.springframework.org/schema/beans/spring-beans.xsd">
    6     <!-- 位置信息服务接口-->
    7     <bean id="locationService" class="cn.cen2guo.clinic.service.serviceImpl.LocationServiceImpl"/>
    8 
    9 </beans>
    View Code
  • 相关阅读:
    当你输入一个网址的时候,实际会发生什么?
    HTTP响应报文与工作原理详解
    DNS系统的解析原理
    spark-streaming集成Kafka处理实时数据
    python分布式环境下的限流器
    使用spark与MySQL进行数据交互的方法
    Linux Redis集群搭建与集群客户端实现
    commons-pool与commons-pool2连接池(Hadoop连接池)
    Kazoo Python Zookeeper 选主
    SpringMVC拦截器Interceptor
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/12238976.html
Copyright © 2011-2022 走看看