美文网首页
第一章 Spring IoC

第一章 Spring IoC

作者: 七十二年蝉 | 来源:发表于2019-06-17 23:33 被阅读0次
     IoC是一种通过描述来生成或获取对象的技术(更准确说是理念),在Spring中,我们可以通过注解的方式描述对象。Spring吧每一个需要管理的对象称之为Spring Bean,管理这些Spring Bean的容器称之为IoC容器,一个IoC容器需要具备两个基本的功能:
  1. 通过描述管理Bean,包括发布和获取Bean;
  2. 通过描述完成Bean之间的依赖关系。

Spring中要求所有的IoC容器都需要实现接口BeanFactory,其源码如下:

package org.springframework.beans.factory;

import org.springframework.beans.BeansException;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;

public interface BeanFactory {

    String FACTORY_BEAN_PREFIX = "&";

    Object getBean(String name) throws BeansException;

    <T> T getBean(String name, Class<T> requiredType) throws BeansException;

    Object getBean(String name, Object... args) throws BeansException;

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

    <T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);

    <T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType);

    boolean containsBean(String name);

    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

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

    boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;

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

    String[] getAliases(String name);

}
    默认情况下,Bean都是单例的,因此注意到上述代码中有两个方法:isSingleton(String)和isPrototype(String name),对于同一个Bean来说,这两个方法的返回值是相反的,如果一个Bean是Singleton的,那么每次IoC容器都会返回给调用者同一个Bean,如果一个Bean是Prototype,那么每次Ioc容器会创建一个新的Bean返回给调用者。TIPS:Spring只能管理单例Bean的生命周期。

未完

相关文章

网友评论

      本文标题:第一章 Spring IoC

      本文链接:https://www.haomeiwen.com/subject/zmigfctx.html