zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    如何快速提高编程能力
    Django线上部署实战教程之Nginx+Gunicorn+Django篇
    Navicat for MySQL远程连接报10038的错误
    DjangoBlog部署教程
    用windows下的Anaconda搭建Django虚拟环境
    基础类型及相关操作
    格式化输出编码问题!
    初识python!
    Java学习之多线程二
    Java学习之多线程一
  • 原文地址:https://www.cnblogs.com/tangyanbo/p/4283506.html
Copyright © 2011-2022 走看看