详解 MapperScannerConfigurer之sqlSessionFactory注入方式
<p><strong>MapperScannerConfigurer之sqlSessionFactory注入方式讲解</strong></p>
<p>
<span>首先,Mybatis中的有一段配置非常方便,省去我们去写DaoImpl(Dao层实现类)的时间,这个配置就是包扫描。。。。</span></p>
<p>
让我们先来看一段代码:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxml" id="highlighter_168440">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xml comments"><!-- 4:配置扫描Dao接口的包,动态实现Dao接口,注入到Spring容器中 --></code>
</div>
<div class="line number2 index1 alt1">
<code class="xml plain"><</code><code class="xml keyword">bean</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"org.mybatis.spring.mapper.MapperScannerConfigurer"</code><code class="xml plain">></code>
</div>
<div class="line number3 index2 alt2">
<code class="xml spaces"> </code><code class="xml comments"><!--这里是今天要说的重点--></code>
</div>
<div class="line number4 index3 alt1">
<code class="xml spaces"> </code><code class="xml plain"><</code><code class="xml keyword">property</code> <code class="xml color1">name</code><code class="xml plain">=</code><code class="xml string">"sqlSessionFactoryBeanName"</code> <code class="xml color1">value</code><code class="xml plain">=</code><code class="xml string">"sqlSessionFactory"</code><code class="xml plain">></</code><code class="xml keyword">property</code><code class="xml plain">></code>
</div>
<div class="line number5 index4 alt2">
<code class="xml spaces"> </code><code class="xml comments"><!-- 给出需要扫描的Dao接口包 --></code>
</div>
<div class="line number6 index5 alt1">
<code class="xml spaces"> </code><code class="xml plain"><</code><code class="xml keyword">property</code> <code class="xml color1">name</code><code class="xml plain">=</code><code class="xml string">"basePackage"</code> <code class="xml color1">value</code><code class="xml plain">=</code><code class="xml string">"org.seckill.dao"</code><code class="xml plain">></</code><code class="xml keyword">property</code><code class="xml plain">></code>
</div>
<div class="line number7 index6 alt2">
<code class="xml plain"></</code><code class="xml keyword">bean</code><code class="xml plain">></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
在MapperScannerConfigurer中,我们知道sqlSessionFactory的注入方式有四种,分别是sqlSessionFactory,sqlSessionFactoryBeanName,sqlSessionTemplate,sqlSessionTemplateBeanName,而sqlSessionFactory这种已经过时,所以我们用到的是sqlSessionFactoryBeanName,接下来说说这个的好处,为什么要用到它!</p>
<p>
<span>原因1:</span></p>
<p>
注入sqlSessionFactory,(可以不用配置)只有当配置多数据源的时候,这时会有多个sqlSessionFactory,可以通过改属性来指定哪一个sqlSessionFactory(综合网上的总结)</p>
<p>
<span>原因2(重点):</span></p>
<p>
注入sqlSessionFactory,后面的value是SqlSessionFactory的bean的名字,也就是sqlSessionFactory的id当我们的mapperscannerconfigurer启动的时候,可能会出现我们的jdbc.properties文件未被加载,这样的话它拿到的DataSource就是错误的,因为像${jdbc.url}这类的属性还没有被替换掉,所以通过BeanName后处理的方式,当我们去用我们的Mybatis的时候,它才会去找我们对应的sqlSessionFactory,为了防止它提前初始化我们的sqlSessionFactory .</p>
<p>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!</p>
頁:
[1]