Spring 源码阅读二 IOC

一、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();
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值