上一次已经明白mybatis 用 mapperfactorybean得到对象,然后交给spring,那这个是怎么交给spring的呢?
研究mybatis公司,是如何把自己产生的对象(代理对象)注入给spring容器的呢??
也就是要弄清楚,spring提供了哪些技术来实现把一个对象注入给spring容器的?
====================================
-
xml 配置<bean>标签=======不行,对象由mybatis实例化,这种方式是spring来实例化
-
注解扫描=================不行,对象由mybatis实例化,这种方式是spring来实例化
-
@Bean==============可以,每注入一个bean,就要在配置类里面写很多的方法,很多的@bean,不推荐,mybatis也没有采纳\
-
applicationContext===benfactory===register.... 也没有采用,我觉得应该也会出现很多的 注册语句
-
factorybean=====采用,Mapperfactorybean 就实现了factorybean接口。
============================================================
Mybatis仍然保留了注入单个的方式 <bean>标签的方式
继承了factorybean的类,仍然是bean,也需要生效====xml:无法结局注入接口
=====注解@component 这也不行,写死了,无法动态生成
=====@Bean 理论上可以。但是比较冗余,不推荐。
=====采用BeanDeFinition
Class 来描述一个对象, BeanDeFinition 来描述一个bean
BeanDeFinition里面包含很多属性,比如scope是单例还是原型啊什么的一大堆。
而且BeanDeFinition的种类也很多。
Java文件通过类加载器加载到JVM中后变成Class,当spring启动之后
:
判断规则,符合就实例化为BeanDeFinition
把类变成BeanDeFinition,然后变成一个对象,把对象保存着。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。