有几个问题想问下:
1. 为什么扫描实体类包entity要在sqlSessionFactory的bean标签里?
扫描entity包下的实体类不应该在最外层写各种bean吗?
<property name = "typeAliasesPackage" value = "com.imooc.entity" />
2. 为什么mapper.xml要在sqlSessionFactory加载呢?这个我是知道要这么写,但是不太明白原因。
3. 我之前扫描dao接口包,都是以dao接口的类名称为bean的id,直接写在最外层。我那种写法和图片中的写法有什么区别吗?
谢谢。
1.看SqlSessionFactoryBean的源码可以知道typeHandlersPackage是这个类的一个成员变量,配置的是entity的包路径,
spring启动时,会装载这个包路径下的所有实体,效果等同于给每个类加上注解让spring管理,也等同于在spring ctx.xml文件中配置各类bean
2方便通过sqlSessionFactory来读取mapper文件,spring启动时会读取这些mapper文件
3.底层没啥区别,只是按包扫描,当DAO的文件多时,不需要挨个bean配置,优势就体现出来了
推荐看下 https://blog.csdn.net/qq_38094271/article/details/80308404
再看看源码,就容易理解了
spring启动就会创建factory,将扫描放到sqlsessionfactory加载的时候,不用每次都加载,一次加载就可以了。