本文先从一个点分析,spring是如何集成mybatis的。
问题
1.mybatis里面创建的实例是怎么被spring管理的?
2. mybatis 里面的FactoryBean到底起什么作用?
bean的创建方式
1.声明式
就是通过我们注解
@Component,或者@bean 或者xml配置等。
2.编程式
就是通过
BeanDefinitionBuilder 创建。
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition(); beanDefinition.setBeanClass(HgzFactoryBean.class); beanDefinition.getConstructorArgumentValues().addGenericArgumentValue(Order.class); registry.registerBeanDefinition("order", beanDefinition);
通过这种方式,创建的bean就能被spring 容器管理。
spring是如何引入别的包,并对bean管理。
1.首先我们知道FactoryBean是一种特殊的bean。特殊的地方在于,我们可以在factorybean里面创建bean实例,并且能指定返回类型。
2. 所以我们只要在第三方包里面的要产生的bean,放到自定义的FactoryBean就行。
我们在自定义FactoryBean里面引入一个变量Class,只要我们扫描的对象要创建的都在这里生成,就能创建我们需要的bean。
3.我们可以定义factorybean的创建bean的过程等。
注册bean
注册bean,我们首先想到的是通过
ImportBeanDefinitionRegistrar 首先这个类,在引入@import,就能在创建bean定义的时候,自定义实现。