Spring源码阅读二

  一、Spring2大核心:IOC和AOP

      IOC控制反转:由容器来创建对象,管理对象之间的依赖耦合关系

     二、来看工厂核心接口: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;

    
    <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;


    boolean containsBean(String name);


    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;//判断是否是单例   只创建一次  bean的生成方式之一

    
    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;//判断是否是原型    每次都创建对象    bean的生成方式之一


    boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;


    Class<?> getType(String name) throws NoSuchBeanDefinitionException;

    
    String[] getAliases(String name);
总结:这个类是Spring所有bean的工厂,其实IOC的核心思想就是运用了工厂设计模式,通过Bean名称返回对应的实例。
关键点:一、对各种bean的定义
二、bean的对应关系
三、读取xml工具类
spring中可以配置 lazy-init=true,让bean在需要的时候进行初始化。
三、bean定义的接口:BeanDefinition
package org.springframework.beans.factory.config;

import org.springframework.beans.BeanMetadataElement;

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {
    
String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;

String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;

int ROLE_APPLICATION = 0;

int ROLE_SUPPORT = 1;

int ROLE_INFRASTRUCTURE = 2;


String getParentName();

    
    void setParentName(String parentName);

    
    String getBeanClassName();

    void setBeanClassName(String beanClassName);


    
    String getFactoryMethodName();

    
    void setFactoryMethodName(String factoryMethodName);

    
    void setScope(String scope);


    void setLazyInit(boolean lazyInit);


String[] getDependsOn();//获取依赖的bean
void setDependsOn(String... dependsOn);//设置依赖的bean boolean isAutowireCandidate(); void setAutowireCandidate(boolean autowireCandidate); boolean isPrimary(); void setPrimary(boolean primary); ConstructorArgumentValues getConstructorArgumentValues(); MutablePropertyValues getPropertyValues(); boolean isSingleton(); boolean isPrototype(); boolean isAbstract(); int getRole(); String getDescription(); String getResourceDescription(); BeanDefinition getOriginatingBeanDefinition();

 



 

posted on 2016-10-13 16:00  风清扬001  阅读(140)  评论(0编辑  收藏  举报