Class SimpleJndiBeanFactory

All Implemented Interfaces:
org.springframework.beans.factory.BeanFactory

public class SimpleJndiBeanFactory extends JndiLocatorSupport implements org.springframework.beans.factory.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 Jakarta EE 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.

Since:
2.5
Author:
Juergen Hoeller
See Also:
  • Constructor Details

    • SimpleJndiBeanFactory

      public SimpleJndiBeanFactory()
  • Method Details

    • addShareableResource

      public void addShareableResource(String shareableResource)
      Add the name of a shareable JNDI resource, which this factory is allowed to cache once obtained.
      Parameters:
      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.
      Parameters:
      shareableResources - the JNDI names (typically within the "java:comp/env/" namespace)
    • getBean

      public Object getBean(String name) throws org.springframework.beans.BeansException
      Specified by:
      getBean in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.BeansException
    • getBean

      public <T> T getBean(String name, Class<T> requiredType) throws org.springframework.beans.BeansException
      Specified by:
      getBean in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.BeansException
    • getBean

      public Object getBean(String name, @Nullable Object... args) throws org.springframework.beans.BeansException
      Specified by:
      getBean in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.BeansException
    • getBean

      public <T> T getBean(Class<T> requiredType) throws org.springframework.beans.BeansException
      Specified by:
      getBean in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.BeansException
    • getBean

      public <T> T getBean(Class<T> requiredType, @Nullable Object... args) throws org.springframework.beans.BeansException
      Specified by:
      getBean in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.BeansException
    • getBeanProvider

      public <T> org.springframework.beans.factory.ObjectProvider<T> getBeanProvider(Class<T> requiredType)
      Specified by:
      getBeanProvider in interface org.springframework.beans.factory.BeanFactory
    • getBeanProvider

      public <T> org.springframework.beans.factory.ObjectProvider<T> getBeanProvider(org.springframework.core.ResolvableType requiredType)
      Specified by:
      getBeanProvider in interface org.springframework.beans.factory.BeanFactory
    • containsBean

      public boolean containsBean(String name)
      Specified by:
      containsBean in interface org.springframework.beans.factory.BeanFactory
    • isSingleton

      public boolean isSingleton(String name) throws org.springframework.beans.factory.NoSuchBeanDefinitionException
      Specified by:
      isSingleton in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.factory.NoSuchBeanDefinitionException
    • isPrototype

      public boolean isPrototype(String name) throws org.springframework.beans.factory.NoSuchBeanDefinitionException
      Specified by:
      isPrototype in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.factory.NoSuchBeanDefinitionException
    • isTypeMatch

      public boolean isTypeMatch(String name, org.springframework.core.ResolvableType typeToMatch) throws org.springframework.beans.factory.NoSuchBeanDefinitionException
      Specified by:
      isTypeMatch in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.factory.NoSuchBeanDefinitionException
    • isTypeMatch

      public boolean isTypeMatch(String name, @Nullable Class<?> typeToMatch) throws org.springframework.beans.factory.NoSuchBeanDefinitionException
      Specified by:
      isTypeMatch in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.factory.NoSuchBeanDefinitionException
    • getType

      @Nullable public Class<?> getType(String name) throws org.springframework.beans.factory.NoSuchBeanDefinitionException
      Specified by:
      getType in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.factory.NoSuchBeanDefinitionException
    • getType

      @Nullable public Class<?> getType(String name, boolean allowFactoryBeanInit) throws org.springframework.beans.factory.NoSuchBeanDefinitionException
      Specified by:
      getType in interface org.springframework.beans.factory.BeanFactory
      Throws:
      org.springframework.beans.factory.NoSuchBeanDefinitionException
    • getAliases

      public String[] getAliases(String name)
      Specified by:
      getAliases in interface org.springframework.beans.factory.BeanFactory