BeanFactory

7742 단어 spring
/**
 * BeanFactory Spring Bean      , bean          。      ListableBeanFactory ConfigurableBeanFactory         。
 *         bean       ,  bean   String      。
 *   bean  ,              (Prototype    ),        (Singleton         ,             )。
 *              bean    :API    。  Spring 2.0  ,            (  Web    “request” “session”   ),          。
 *         BeanFactory             ,            (  ,              )。
 *    ,          (“  ”  ),  setter              ,    BeanFactory           “ ”  。 Spring            BeanFactory          。
 *   ,BeanFactory         (  XML  )  bean  ,   code org.springframework.beans    bean。  ,        Java           Java  。           :LDAP,RDBMS,XML,     。       bean     (    )。
 *  ListableBeanFactory      ,   HierarchicalBeanFactory,                 。            bean,         。       Bean             Bean。
 *
 * Bean            bean      。                :
 * BeanNameAware.setBeanName()
 * BeanClassLoaderAware.setBeanClassLoader()
 * BeanFactoryAware.setBeanFactory()
 * EnvironmentAware.setEnvironment()
 * EmbeddedValueResolverAware.setEmbeddedValueResolver()
 * ResourceLoaderAware.setResourceLoader()                  
 * ApplicationEventPublisherAware.setApplicationEventPublisher()                 
 * MessageSourceAware.setMessageSource()                 
 * ApplicationContextAware.setApplicationContext()                 
 * ServletContextAware.setServletContext()                 
 * BeanPostProcessors.postProcessBeforeInitialization() InitializingBean.afterPropertiesSet()           
 * BeanPostProcessors.postProcessAfterInitialization()
 *
 *   bean   ,          :
 * DestructionAwareBeanPostProcessors.postProcessBeforeDestruction()
 * DisposableBea.destroy           
 */
public interface BeanFactory {

    /**
     *       FactoryBean  ,    FactoryBean   bean    。  ,    myJndiObject bean FactoryBean,   &myJndiObject     ,          。
     */
    String FACTORY_BEAN_PREFIX = "&";

    /**
     *     bean   ,             。     Spring BeanFactory  Singleton Prototype       。 
     *  Singleton bean    ,               。           bean  。                  bean。
     * @param       bean   
     * @return bean     
     * @throws            bean,  NoSuchBeanDefinitionException
     * @throws       bean,  BeansException
     */
    Object getBean(String name) throws BeansException;

    /**
     *     bean   ,             。
     *  getBean(String)     ,   bean      ,     BeanNotOfRequiredTypeException           。                ClassCastException,  #getBean(String)  。           bean  。                   bean。
     * @param       bean   
     * @param bean      ,         
     * @return   bean  
     * @throws            bean,  NoSuchBeanDefinitionException
     * @throws   bean       ,  BeanNotOfRequiredTypeException
     * @throws   bean    ,  BeansException
     */
     T getBean(String name, Class requiredType) throws BeansException;

    /**
     *     bean   ,             。
     *             /      ,  bean          (   )。
     * @param       bean   
     * @param args         bean        (          ,             )
     * @return   bean  
     * @throws            bean,  NoSuchBeanDefinitionException
     * @throws               bean  Prototype,  BeanDefinitionStoreException
     * @throws   bean    ,  BeansException
     */
    Object getBean(String name, Object... args) throws BeansException;

    /**
     *              bean  (   )。     ListableBeanFactory       ,                        。     bean          ,    ListableBeanFactory / BeanFactoryUtils。
     * @param bean      ,         
     * @return          bean   
     * @throws            bean,  NoSuchBeanDefinitionException 
     * @throws            bean,  NoUniqueBeanDefinitionException
     * @throws       bean,  BeansException
     */
     T getBean(Class requiredType) throws BeansException;

    /**
     *     bean   ,             。
     *             /      ,  bean          (   )。     ListableBeanFactory       ,                         。   bean          ,   ListableBeanFactory / BeanFactoryUtils。
     * @param requiredType bean      ,         
     * @param args         bean        (          ,             )
     * @return   bean  
     * @throws            bean,  NoSuchBeanDefinitionException 
     * @throws               bean  Prototype,  BeanDefinitionStoreException
     * @throws       bean,  BeansException
     * @since 4.1
     */
     T getBean(Class requiredType, Object... args) throws BeansException;

    /**
     *     bean     ,             ,           。
     * @param requiredType bean      ,         
     * @return         
     */
     ObjectProvider getBeanProvider(Class requiredType);

    /**
     *     bean     ,             ,           。
     * @param requiredType bean      。         。   ,         ,        。                bean  ,       bean       ,     ObjectProvider.orderedStream()     /    。
     * @return         
     */
     ObjectProvider getBeanProvider(ResolvableType requiredType);

    /**
     *  bean      bean               singleton  ?
     *           ,           bean  。         ,                     bean。           bean       ,       true。
     *     bean           ,lazy  eager ,     。   ,       true        getBean          。
     * @param name    bean   
     * @return      bean    
     */
    boolean containsBean(String name);

    /**
     *  Bean        ?     , getBean()           ?
     *   :  false                 。        ,          bean。  isPrototype              。           bean  。                  bean。
     * @param name    bean   
     * @return  bean       
     * @throws          Bean,  NoSuchBeanDefinitionException
     */
    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

    /**
     *  bean   Prototype?     ,getBean         ?
     *   :  false               。        ,          bean。  isSingleton            。           bean  。                  bean。
     * @param name    bean   
     * @return   bean           
     * @throws          Bean,  NoSuchBeanDefinitionException
     */
    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

    /**
     *          bean          。     ,        getBean                    。           bean   .                  bean。
     * @param name   bean   
     * @param typeToMatch       
     * @return   Bean    ,  true;  bean         ,  false。
     * @throws          Bean,  NoSuchBeanDefinitionException
     */
    boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;

    /**
     *          bean          。     ,        getBean                    。           bean   .                  bean。
     * @param name   bean   
     * @param typeToMatch       
     * @return   Bean    ,  true;  bean         ,  false。
     * @throws          Bean,  NoSuchBeanDefinitionException
     */
    boolean isTypeMatch(String name, Class> typeToMatch) throws NoSuchBeanDefinitionException;

    /**
     *        bean   。      ,  getBean     bean         。  FactoryBean,  FactoryBean       , FactoryBean.getObjectType()  。           bean  。                  bean。
     * @param name    bean   
     * @return bean   ,         null。
     * @throws          Bean,  NoSuchBeanDefinitionException
     */
    @Nullable
    Class> getType(String name) throws NoSuchBeanDefinitionException;

    /**
     *     bean     (   )。       getBean           bean。
     *          ,     bean       (      )   ,  bean            。                  bean。
     * @param name        bean  
     * @return   ,    ,     
     */
    String[] getAliases(String name);

}

좋은 웹페이지 즐겨찾기