发表于: 2018-03-06 22:38:43

1 659


今天做了什么:

spring的ioc即控制反转的手段就是di依赖注入,

类似在两个逻辑上有依赖的类之间创建一个ioc容器,将bean中定义的类的对象创建出来放在容器中,当该对象需要被调用时,通过spring的依赖注入实现。

方式有3种,我先用的xml文件配置,后面要用到的注解方式。


着手mybatis跟spring整合

spring框架在resources目录下创建applicationContext.xml。

要创建工厂 bean,放置下面的代码在 Spring 的 XML 配置文件中:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  

<property name="dataSource" ref="dataSource" />

</bean>

如果 MyBatis 映射器 XML 文件在和映射器类相同的路径下不存在,那么另外一个需要 配置文件的原因就是它了。使用这个配置,有两种选择。第一是手动在 MyBatis 的 XML 配 置文件中使用<mappers>部分来指定类路径。第二是使用工厂 bean 的 mapperLocations 属 性。

mapperLocations 属性使用一个资源位置的 list。 这个属性可以用来指定 MyBatis 的 XML 映射器文件的位置。 它的值可以包含 Ant 样式来加载一个目录中所有文件, 或者从基路径下 递归搜索所有路径。比如:

<property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" />

然后数据源配置:

我用的dbcp2。

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations">
       <list>
           <value>classpath:db.properties</value>
       </list>
   </property>
</bean>

<!-- dbcp -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
     destroy-method="close">
   <property name="driverClassName" value="${driverClassName}" />
   <property name="url" value="${url}" />
   <property name="username" value="${username}" />
   <property name="password" value="${password}" />
   <!-- 连接初始值,连接池启动时创建的连接数量的初始值  默认值是0 -->
   <property name="initialSize" value="3" />
   <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请  默认值是0 -->
   <property name="minIdle" value="3" />
   <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 ,0时无限制  默认值是8 -->
   <property name="maxIdle" value="10" />
   <!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制   默认值是8 -->
   <property name="maxTotal" value="15" />
</bean>

<!-- myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
   <!--配置连接数据库数据源-->
   <property name="dataSource" ref="dataSource"/>
   <!-- 加载mybatis配置文件 -->
   <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

mapper的xml和dao的映射跟之前的项目一样。

主要是service层的impl

mybatis-only需要用inputstream手动从recourses里面读取mybatis-config.xml

再创建事务工厂,用sqlsession来进行操作。

mybatis-spring在配置文件中用SqlSessionFactoryBean方法创建了SessionFactory的对象,再用对应id来进行操作。

private static ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
private static StudentMapper studentMapper = context.getBean(StudentMapper.class);

随后的service用studentMapper中定义的接口。

至于service层更深的设计,还没有做到。

至于ApplicationContext、ClassPathXmlApplicationContext

实现的步骤不是很理解。

明天打算做什么:

完成整合。

问题:

mybatis的annotation即注解方式

ApplicationContext的原理。

收获:

师兄今天对于ioc、di的讲解让我很受启发。


返回列表 返回列表
评论

    分享到