发表于: 2018-03-06 22:38:43
1 658
今天做了什么:
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的讲解让我很受启发。
评论