• Spring 源码阅读之BeanFactory


    1. BeanFactory 的结构体系如下:

    2. XmlBeanFactory ,装载Spring配置信息

    package org.springframework.beans.factory.xml;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.support.DefaultListableBeanFactory;
    import org.springframework.core.io.Resource;
    
    public class XmlBeanFactory extends DefaultListableBeanFactory {
    
        private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
    
    
        /**
         * Create a new XmlBeanFactory with the given resource,
         * which must be parsable using DOM.
         * @param resource XML resource to load bean definitions from
         * @throws BeansException in case of loading or parsing errors
         */
        public XmlBeanFactory(Resource resource) throws BeansException {
            this(resource, null);
        }
    
        /**
         * Create a new XmlBeanFactory with the given input stream,
         * which must be parsable using DOM.
         * @param resource XML resource to load bean definitions from
         * @param parentBeanFactory parent bean factory
         * @throws BeansException in case of loading or parsing errors
         */
        public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException {
            super(parentBeanFactory);
            this.reader.loadBeanDefinitions(resource);
        }
    
    }

    3. BeanFactory 接口

    package org.springframework.beans.factory;
    
    import org.springframework.beans.BeansException;
    
    
    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 containsBean(String name);
    
        
        boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
    
        
        boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
    
        
        boolean isTypeMatch(String name, Class targetType) throws NoSuchBeanDefinitionException;
    
        
        Class<?> getType(String name) throws NoSuchBeanDefinitionException;
    
        
        String[] getAliases(String name);
    
    }

    4. 运用实例:

    Resource reource = null;//load spring configure file
    BeanFactory bf = new XmlBeanFactory(reource);
    bf.getBean("beanName");
  • 相关阅读:
    Maven 分模块,启动父工程时异常
    Maven SSH三大框架整合的加载流程
    Maven配置 和创建一个Maven项目
    课程8:《Maven精品教程视频》--视频目录
    salesforce零基础学习(九十三)Email To Case的简单实现
    salesforce零基础学习(九十二)使用Ant Migration Tool 实现Metadata迁移
    Salesforce Sales Cloud 零基础学习(四) Chatter
    Salesforce Sales Cloud 零基础学习(三) Lead & Opportunity & Quote
    Salesforce Sales Cloud 零基础学习(二) Account 和 Contact
    Salesforce Sales Cloud 零基础学习(一) Product 和 Price Book
  • 原文地址:https://www.cnblogs.com/tangyanbo/p/4283506.html
Copyright © 2020-2023  润新知