zoukankan      html  css  js  c++  java
  • 1.BeanFactory解析

    package org.springframework.beans.factory;
    
    import org.springframework.beans.BeansException;
    import org.springframework.core.ResolvableType;
    //BeanFactory 解析   17/04/27
    public interface BeanFactory {
    
        //这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象,  
        //如果需要得到工厂本身,需要转义    
        //转义符“&”用来获取FactoryBean本身
        String FACTORY_BEAN_PREFIX = "&";
    
    
        //根据bean的名字进行获取bean的实例,这是IOC最大的抽象方法
        Object getBean(String name) throws BeansException;
    
        //根据bean的名字和Class类型进行获取Bean的实例,和上面方法不同的是,bean名字和Bean 的class类型不同时候会爆出异常
        <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;
    
        
        <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
    
    
        
         //检测这个IOC容器中是否含有这个Bean
        boolean containsBean(String name);
    
        
         //判断这个Bean是不是单利
        boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
    
         //检测Bena是不是多例,
        boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
    
    
         //查询指定的bean的名字和Class类型是不是指定的Class类型
        boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
    
         
        boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
    
        
         //这里对得到bean实例的Class类型
        Class<?> getType(String name) throws NoSuchBeanDefinitionException;
    
         //这里得到bean的别名,如果根据别名检索,那么其原名也会被检索出来 
        String[] getAliases(String name);
    
    }

    Spring IOC容器最基本的接口BeanFactory,定义了IOC容器最基本的规范,不管如何,作为IOC的容器,这个接口必须满足容器的基本要求.

    BeanFactory里只对IOC容器的基本行为作了定义,对于这个工厂怎么做的,我们根本不需要关i心,我们需要的是关心我们要的bean,

    我们也可以自己来继承Bean,但是没有必要,Spring中提供了相对应得很多实现了beanfactory的模板给我们调用,

    AbstractBeanFactory,DefaultListableBeanFactory,通过resource接口来定义bean数据,然后

    对Xml定义文件的解析通过委托给XmlBeanDefinitionReader来完成,

    创建IOC的过程:

    ClassPathResource  beanxml =new ClassPathResource("bean.xml");
    DefaultListableBeanFactory factory =new DefaultListableBeanFactory();
    XmlBeanDefinitionReader reader=new XmlBeanDefinitionReader(factory);
    reader.loadBeanDefinitions(beanxml);

    以上几部解析:

    1.创建Ioc的容器抽象资源

    2.创建工厂

    3.创建一个读取抽象资源的的  BeanDefinitionReader ,来读取配置文件

    4.读取到信息配置到factory中

     很明显,这是一个典型的工厂模式的工厂接口。

    
    
    
  • 相关阅读:
    soapUI-DataSource
    Linux安装rpm包时报错Header V3 DSA/SHA1 Signature, key ID 1d1e034b: NOKEY解决办法
    Linux命令之rpm安装命令
    soapUi下载
    Red Hat Linux相关产品iso镜像下载
    RedHat Linux文本模式下乱码解决方法
    telnet到RedHat Linux失败--解决办法
    java list去重
    Java Mybatis 框架入门教程
    【阿里天池云-龙珠计划】薄书的机器学习笔记——K近邻(k-nearest neighbors)初探Task02
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6775042.html
Copyright © 2011-2022 走看看