• Spring + myBatis 初始化Dao对象过程


    <?xml version="1.0" encoding="UTF-8"?>


    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 读取配置文件 -->
    <context:property-placeholder location="classpath:db.properties" />

    <!-- 配置datasources -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/station_demo"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
    </bean>

    <!-- 整合mybatis -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 数据源 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 属性-->
    <!-- 映射文件地址 -->
    <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
    </bean>

    <!-- ProduuctDao -->
    <bean id="productDao" class="com.day11.ssm.spring.mybatis.dao.impl.ProductDao">
    <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

    <!--在从容器中取productDao的id对象时,由于其属性中有类的类型变量name,
    因此,先初始化该类的对象,即id为sqlSessionFactory的类对象,然后再
    调整setSqlSessionFactory()方法;
    同理,在初始化id为sqlSessionFactory的类对象时,由于其属性中有类的
    类型变量name,因此,先初始化该类的对象,即id为dataSource的类对象,
    然后再调整setDataSource()方法;
    在初始化id为dataSource的类对象时,其属性均为基本数据类型,因此,直接
    完成初始化,产生id为dataSource的类对象;

    因此,从容器中取productDao的id对象时,过程如下:
    1. 创建id为dataSourcer的org.apache.commons.dbcp.BasicDataSource的对象;
    2. 调用id为dataSourcer的org.apache.commons.dbcp.BasicDataSource的
    setDriverClassName()、setUrl()、setUsername()、setPassword()方法完成该
    类对象的属性设置;
    3. 创建id为sqlSessionFactory的org.mybatis.spring.SqlSessionFactoryBean
    对象;
    4. 将步骤1中创建的org.apache.commons.dbcp.BasicDataSource的对象作为
    参数传给org.mybatis.spring.SqlSessionFactoryBean对象的setDataSource()方法,
    并调用该方法,完成org.mybatis.spring.SqlSessionFactoryBean对象的属性设置;
    5. 创建id为productDao的com.day11.ssm.spring.mybatis.dao.impl.ProductDao
    对象;
    4. 将步骤4中创建的org.mybatis.spring.SqlSessionFactoryBean对象作为参数传给
    com.day11.ssm.spring.mybatis.dao.impl.ProductDao对象的setSqlSessionFactory()
    方法,并调用该方法,完成com.day11.ssm.spring.mybatis.dao.impl.ProductDao
    对象的属性设置;

    从以上的例子过程可以总结:
    1. 最先初始化的类对象一定是不包括类型为类的成员变量的对象,如上例中的
    org.apache.commons.dbcp.BasicDataSource类对象;
    2. 最后调用的set方法可以是为得到其他的类成员变量进行初始化,而非为set方法的参数
    类成员变量进行初始化,如本例中调用com.day11.ssm.spring.mybatis.dao.impl.ProductDao
    类对象的setSqlSessionFactory()方法,实际上是为其sqlSession成员变量进行初始化;
    3. 除第2项中最后调用的set方法外的set方法,其均为正常的set方法,为其set参数的类成员
    变量进行初始化,如:
    setDriverClassName()设置driverClassName属性;
    setDataSource()设置dataSource属性等。
    -->

    </beans>
    逆天改命!我命由我不由天!
  • 相关阅读:
    Don't Dismiss Georgia Tech's $6,600 Online Master's Degree
    Java SPI机制学习笔记
    Java SPI机制简介
    Java SPI机制
    Java SPI机制原理和使用场景
    中文代码之Spring Boot集成H2内存数据库
    H2数据库攻略
    JAVA 项目中使用 H2 数据库
    Java内存数据库-H2介绍及实例(SpringBoot)
    内存数据库-H2简介与实践
  • 原文地址:https://www.cnblogs.com/huhewei/p/13889365.html
Copyright © 2020-2023  润新知