BeanFactory

Spring的BeanFactory和FactoryBean

筅森魡賤 提交于 2020-04-18 01:41:50
1、 BeanFactory BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的的最基本的接口,也就是Spring IOC 所遵守的最底层和最基本的编程规范。在 Spring 代码中, BeanFactory 只是个接口,并不是 IOC容器的具体实现,但是 Spring 容器给出了很多种实现,如 DefaultListableBeanFactory 、 XmlBeanFactory 、ApplicationContext 等,都是附加了某种功能的实现。 以下为BeanFactory接口的定义: public interface BeanFactory { String FACTORY_BEAN_PREFIX = "&"; Object getBean(String name) throws BeansException; <T> T getBean(String name, Class<T> requiredType) throws BeansException; <T> T getBean(Class<T> requiredType) throws BeansException; Object getBean(String name, Object... args) throws BeansException; boolean

经典Java面试题-Spring BeanFactory

拟墨画扇 提交于 2019-12-01 01:08:26
[ 面试原题] ApplicationContext和BeanFactory的区别 [ 正确答案] 1.如果使用ApplicationContext,则配置的bean如果是singleton不管你用还是不用,都被实例化。好处是可以预先加载,坏处是浪费内存。它也可以为Bean配置lazy-init=true来让Bean延迟实例化。 2. BeanFactory ,当使用BeanFactory实例化对象时,配置的bean不会马上被实例化。当你使用该bean时才会被实例化(getBean)。好处是节约内存,缺点是速度比较慢。多用于移动设备的开发上。 3.一般没有特殊要求,应当使用ApplicationContext完成。 [ 面试技术点] Spring Bean 初始化的方法。 [ 解读] 1. 从ApplicationContext中取bean ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); 当我们实例化bean.xml时,该文件中配置的bean都会被实例化。(该bean scope是singleton) 2. 从BeanFactory中取bean BeanFactory factory= new XmlBeanFactory(new ClassPathResource("bean.xml"