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中

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

    
    
    
  • 相关阅读:
    java Activiti 工作流引擎 SSM 框架模块设计方案
    自定义表单 Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    数据库设计的十个最佳实践
    activiti 汉化 stencilset.json 文件内容
    JAVA oa 办公系统模块 设计方案
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    集成 nacos注册中心配置使用
    “感恩节 ”怼记
    仓颉编程语言的一点期望
    关于System.out.println()与System.out.print("\n")的区别
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6775042.html
Copyright © 2011-2022 走看看