类 SimpleJndiBeanFactory

  • 所有已实现的接口:
    BeanFactory

    public class SimpleJndiBeanFactory
    extends JndiLocatorSupport
    implements BeanFactory
    Simple JNDI-based implementation of Spring's BeanFactory interface. Does not support enumerating bean definitions, hence doesn't implement the ListableBeanFactory interface.

    This factory resolves given bean names as JNDI names within the J2EE application's "java:comp/env/" namespace. It caches the resolved types for all obtained objects, and optionally also caches shareable objects (if they are explicitly marked as shareable resource.

    The main intent of this factory is usage in combination with Spring's CommonAnnotationBeanPostProcessor, configured as "resourceFactory" for resolving @Resource annotations as JNDI objects without intermediate bean definitions. It may be used for similar lookup scenarios as well, of course, in particular if BeanFactory-style type checking is required.

    从以下版本开始:
    2.5
    作者:
    Juergen Hoeller
    另请参阅:
    DefaultListableBeanFactory, CommonAnnotationBeanPostProcessor
    • 方法详细资料

      • addShareableResource

        public void addShareableResource​(String shareableResource)
        Add the name of a shareable JNDI resource, which this factory is allowed to cache once obtained.
        参数:
        shareableResource - the JNDI name (typically within the "java:comp/env/" namespace)
      • setShareableResources

        public void setShareableResources​(String... shareableResources)
        Set a list of names of shareable JNDI resources, which this factory is allowed to cache once obtained.
        参数:
        shareableResources - the JNDI names (typically within the "java:comp/env/" namespace)
      • getBean

        public Object getBean​(String name)
                       throws BeansException
        从接口复制的说明: BeanFactory
        Return an instance, which may be shared or independent, of the specified bean.

        This method allows a Spring BeanFactory to be used as a replacement for the Singleton or Prototype design pattern. Callers may retain references to returned objects in the case of Singleton beans.

        Translates aliases back to the corresponding canonical bean name. Will ask the parent factory if the bean cannot be found in this factory instance.

        指定者:
        getBean 在接口中 BeanFactory
        参数:
        name - the name of the bean to retrieve
        返回:
        an instance of the bean
        抛出:
        NoSuchBeanDefinitionException - if there is no bean with the specified name
        BeansException - if the bean could not be obtained
      • getBean

        public <T> T getBean​(String name,
                             Class<T> requiredType)
                      throws BeansException
        从接口复制的说明: BeanFactory
        Return an instance, which may be shared or independent, of the specified bean.

        Behaves the same as BeanFactory.getBean(String), but provides a measure of type safety by throwing a BeanNotOfRequiredTypeException if the bean is not of the required type. This means that ClassCastException can't be thrown on casting the result correctly, as can happen with BeanFactory.getBean(String).

        Translates aliases back to the corresponding canonical bean name. Will ask the parent factory if the bean cannot be found in this factory instance.

        指定者:
        getBean 在接口中 BeanFactory
        参数:
        name - the name of the bean to retrieve
        requiredType - type the bean must match. Can be an interface or superclass of the actual class, or null for any match. For example, if the value is Object.class, this method will succeed whatever the class of the returned instance.
        返回:
        an instance of the bean
        抛出:
        NoSuchBeanDefinitionException - if there is no such bean definition
        BeanNotOfRequiredTypeException - if the bean is not of the required type
        BeansException - if the bean could not be created
      • getBean

        public Object getBean​(String name,
                              Object... args)
                       throws BeansException
        从接口复制的说明: BeanFactory
        Return an instance, which may be shared or independent, of the specified bean.

        Allows for specifying explicit constructor arguments / factory method arguments, overriding the specified default arguments (if any) in the bean definition.

        指定者:
        getBean 在接口中 BeanFactory
        参数:
        name - the name of the bean to retrieve
        args - arguments to use when creating a bean instance using explicit arguments (only applied when creating a new instance as opposed to retrieving an existing one)
        返回:
        an instance of the bean
        抛出:
        NoSuchBeanDefinitionException - if there is no such bean definition
        BeanDefinitionStoreException - if arguments have been given but the affected bean isn't a prototype
        BeansException - if the bean could not be created
      • getBean

        public <T> T getBean​(Class<T> requiredType,
                             Object... args)
                      throws BeansException
        从接口复制的说明: BeanFactory
        Return an instance, which may be shared or independent, of the specified bean.

        Allows for specifying explicit constructor arguments / factory method arguments, overriding the specified default arguments (if any) in the bean definition.

        This method goes into ListableBeanFactory by-type lookup territory but may also be translated into a conventional by-name lookup based on the name of the given type. For more extensive retrieval operations across sets of beans, use ListableBeanFactory and/or BeanFactoryUtils.

        指定者:
        getBean 在接口中 BeanFactory
        参数:
        requiredType - type the bean must match; can be an interface or superclass
        args - arguments to use when creating a bean instance using explicit arguments (only applied when creating a new instance as opposed to retrieving an existing one)
        返回:
        an instance of the bean
        抛出:
        NoSuchBeanDefinitionException - if there is no such bean definition
        BeanDefinitionStoreException - if arguments have been given but the affected bean isn't a prototype
        BeansException - if the bean could not be created
      • containsBean

        public boolean containsBean​(String name)
        从接口复制的说明: BeanFactory
        Does this bean factory contain a bean definition or externally registered singleton instance with the given name?

        If the given name is an alias, it will be translated back to the corresponding canonical bean name.

        If this factory is hierarchical, will ask any parent factory if the bean cannot be found in this factory instance.

        If a bean definition or singleton instance matching the given name is found, this method will return true whether the named bean definition is concrete or abstract, lazy or eager, in scope or not. Therefore, note that a true return value from this method does not necessarily indicate that BeanFactory.getBean(java.lang.String) will be able to obtain an instance for the same name.

        指定者:
        containsBean 在接口中 BeanFactory
        参数:
        name - the name of the bean to query
        返回:
        whether a bean with the given name is present
      • getAliases

        public String[] getAliases​(String name)
        从接口复制的说明: BeanFactory
        Return the aliases for the given bean name, if any. All of those aliases point to the same bean when used in a BeanFactory.getBean(java.lang.String) call.

        If the given name is an alias, the corresponding original bean name and other aliases (if any) will be returned, with the original bean name being the first element in the array.

        Will ask the parent factory if the bean cannot be found in this factory instance.

        指定者:
        getAliases 在接口中 BeanFactory
        参数:
        name - the bean name to check for aliases
        返回:
        the aliases, or an empty array if none
        另请参阅:
        BeanFactory.getBean(java.lang.String)