1、BeanFactory是一个最顶层的Ioc容器,它管理对bean的操作方法:(批量生产bean的工厂)
BeanFactory中的方法:
1》查找bean ————> getBean()
2》判断BeanFactory中是否包含某个bean ——> containsBean()
3》判断bean是否是单例类型 ——> isSingleton()
4》bean是否是原型类型 ——> isPrototype()
5》bean是否匹配某个类型 ——> isTypeMatch() 该方法有重载
6》得到bean的类型 ——> getType()
7》得到bean的别名 ——> getAliases()
BeanFactory中的属性:
1》FACTORY_BEAN_PREFIX = "&"; ——> 该属性的使用场景:用于区分工厂类的bean和普通类的bean。BeanFactory本身也是一个类,也需要创建BeanFactory的实例bean,通过getBean(字符串参数)方法获取一个bean的时候会判断 字符串参数 中是否包含FACTORY_BEAN_PREFIX 定义的前缀,即 &。如果包含,则会得到BeanFactory的一个实例bean;如果不包含,则得到普通bean(非BeanFactory的bean实例)
2、FactoryBean是一个特殊的Bean,它是一个工厂bean(只能创建某种类型bean的工厂)
如果某个bean实现了FactoryBean这个接口,那么这个bean就必然不是一个普通的bean,而是一个工厂bean(所以工厂bean也是像一个普通bean一样,保存在Ioc容器(BeanFactory)中)。那么该bean就可以通过getObject()方法,返回一个其他的bean。作用:这个bean在动态代理中(spring的Aop)得到了大量的运用,利用这个bean返回一个代理bean
FactoryBean这个接口里面的方法:
1》返回一个对象(bean)——> getObject()
2》管理的bean是否是单例的 ——> isSingleton() factoryBean调用getObject()方法返回的bean,就是它所管理的bean