Interface BeanDefinition

All Superinterfaces:
AttributeAccessor, BeanMetadataElement
All Known Subinterfaces:
AnnotatedBeanDefinition
All Known Implementing Classes:
AbstractBeanDefinition, AnnotatedGenericBeanDefinition, ChildBeanDefinition, GenericBeanDefinition, RootBeanDefinition, ScannedGenericBeanDefinition

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement
A BeanDefinition describes a bean instance, which has property values, constructor argument values, and further information supplied by concrete implementations.

This is just a minimal interface: The main intention is to allow a BeanFactoryPostProcessor to introspect and modify property values and other bean metadata.

Since:
19.03.2004
Author:
Juergen Hoeller, Rob Harrop
See Also:
  • Field Details

  • Method Details

    • setParentName

      void setParentName(@Nullable String parentName)
      Set the name of the parent definition of this bean definition, if any.
    • getParentName

      @Nullable String getParentName()
      Return the name of the parent definition of this bean definition, if any.
    • setBeanClassName

      void setBeanClassName(@Nullable String beanClassName)
      Specify the bean class name of this bean definition.

      The class name can be modified during bean factory post-processing, typically replacing the original class name with a parsed variant of it.

      See Also:
    • getBeanClassName

      @Nullable String getBeanClassName()
      Return the current bean class name of this bean definition.

      Note that this does not have to be the actual class name used at runtime, in case of a child definition overriding/inheriting the class name from its parent. Also, this may just be the class that a factory method is called on, or it may even be empty in case of a factory bean reference that a method is called on. Hence, do not consider this to be the definitive bean type at runtime but rather only use it for parsing purposes at the individual bean definition level.

      See Also:
    • setScope

      void setScope(@Nullable String scope)
      Override the target scope of this bean, specifying a new scope name.
      See Also:
    • getScope

      @Nullable String getScope()
      Return the name of the current target scope for this bean, or null if not known yet.
    • setLazyInit

      void setLazyInit(boolean lazyInit)
      Set whether this bean should be lazily initialized.

      If false, the bean will get instantiated on startup by bean factories that perform eager initialization of singletons.

    • isLazyInit

      boolean isLazyInit()
      Return whether this bean should be lazily initialized, i.e. not eagerly instantiated on startup. Only applicable to a singleton bean.
    • setDependsOn

      void setDependsOn(String @Nullable ... dependsOn)
      Set the names of the beans that this bean depends on being initialized. The bean factory will guarantee that these beans get initialized first.

      Note that dependencies are normally expressed through bean properties or constructor arguments. This property should just be necessary for other kinds of dependencies like statics (*ugh*) or database preparation on startup.

    • getDependsOn

      String @Nullable [] getDependsOn()
      Return the bean names that this bean depends on.
    • setAutowireCandidate

      void setAutowireCandidate(boolean autowireCandidate)
      Set whether this bean is a candidate for getting autowired into some other bean.

      Note that this flag is designed to only affect type-based autowiring. It does not affect explicit references by name, which will get resolved even if the specified bean is not marked as an autowire candidate. As a consequence, autowiring by name will nevertheless inject a bean if the name matches.

    • isAutowireCandidate

      boolean isAutowireCandidate()
      Return whether this bean is a candidate for getting autowired into some other bean.
    • setPrimary

      void setPrimary(boolean primary)
      Set whether this bean is a primary autowire candidate.

      If this value is true for exactly one bean among multiple matching candidates, it will serve as a tie-breaker.

      See Also:
    • isPrimary

      boolean isPrimary()
      Return whether this bean is a primary autowire candidate.
    • setFallback

      void setFallback(boolean fallback)
      Set whether this bean is a fallback autowire candidate.

      If this value is true for all beans but one among multiple matching candidates, the remaining bean will be selected.

      Since:
      6.2
      See Also:
    • isFallback

      boolean isFallback()
      Return whether this bean is a fallback autowire candidate.
      Since:
      6.2
    • setFactoryBeanName

      void setFactoryBeanName(@Nullable String factoryBeanName)
      Specify the factory bean to use, if any. This is the name of the bean to call the specified factory method on.

      A factory bean name is only necessary for instance-based factory methods. For static factory methods, the method will be derived from the bean class.

      See Also:
    • getFactoryBeanName

      @Nullable String getFactoryBeanName()
      Return the factory bean name, if any.

      This will be null for static factory methods which will be derived from the bean class instead.

      See Also:
    • setFactoryMethodName

      void setFactoryMethodName(@Nullable String factoryMethodName)
      Specify a factory method, if any. This method will be invoked with constructor arguments, or with no arguments if none are specified. The method will be invoked on the specified factory bean, if any, or otherwise as a static method on the local bean class.
      See Also:
    • getFactoryMethodName

      @Nullable String getFactoryMethodName()
      Return a factory method, if any.
      See Also:
    • getConstructorArgumentValues

      ConstructorArgumentValues getConstructorArgumentValues()
      Return the constructor argument values for this bean.

      The returned instance can be modified during bean factory post-processing.

      Returns:
      the ConstructorArgumentValues object (never null)
    • hasConstructorArgumentValues

      default boolean hasConstructorArgumentValues()
      Return if there are constructor argument values defined for this bean.
      Since:
      5.0.2
      See Also:
    • getPropertyValues

      MutablePropertyValues getPropertyValues()
      Return the property values to be applied to a new instance of the bean.

      The returned instance can be modified during bean factory post-processing.

      Returns:
      the MutablePropertyValues object (never null)
    • hasPropertyValues

      default boolean hasPropertyValues()
      Return if there are property values defined for this bean.
      Since:
      5.0.2
      See Also:
    • setInitMethodName

      void setInitMethodName(@Nullable String initMethodName)
      Set the name of the initializer method.
      Since:
      5.1
    • getInitMethodName

      @Nullable String getInitMethodName()
      Return the name of the initializer method.
      Since:
      5.1
    • setDestroyMethodName

      void setDestroyMethodName(@Nullable String destroyMethodName)
      Set the name of the destroy method.
      Since:
      5.1
    • getDestroyMethodName

      @Nullable String getDestroyMethodName()
      Return the name of the destroy method.
      Since:
      5.1
    • setRole

      void setRole(int role)
      Set the role hint for this BeanDefinition. The role hint provides the frameworks as well as tools an indication of the role and importance of a particular BeanDefinition.
      Since:
      5.1
      See Also:
    • getRole

      int getRole()
      Get the role hint for this BeanDefinition. The role hint provides the frameworks as well as tools an indication of the role and importance of a particular BeanDefinition.
      See Also:
    • setDescription

      void setDescription(@Nullable String description)
      Set a human-readable description of this bean definition.
      Since:
      5.1
    • getDescription

      @Nullable String getDescription()
      Return a human-readable description of this bean definition.
    • getResolvableType

      ResolvableType getResolvableType()
      Return a resolvable type for this bean definition, based on the bean class or other specific metadata.

      This is typically fully resolved on a runtime-merged bean definition but not necessarily on a configuration-time definition instance.

      Returns:
      the resolvable type (potentially ResolvableType.NONE)
      Since:
      5.2
      See Also:
    • isSingleton

      boolean isSingleton()
      Return whether this a Singleton, with a single, shared instance returned on all calls.
      See Also:
    • isPrototype

      boolean isPrototype()
      Return whether this a Prototype, with an independent instance returned for each call.
      Since:
      3.0
      See Also:
    • isAbstract

      boolean isAbstract()
      Return whether this bean is "abstract", that is, not meant to be instantiated itself but rather just serving as parent for concrete child bean definitions.
    • getResourceDescription

      @Nullable String getResourceDescription()
      Return a description of the resource that this bean definition came from (for the purpose of showing context in case of errors).
    • getOriginatingBeanDefinition

      @Nullable BeanDefinition getOriginatingBeanDefinition()
      Return the originating BeanDefinition, or null if none.

      Allows for retrieving the decorated bean definition, if any.

      Note that this method returns the immediate originator. Iterate through the originator chain to find the original BeanDefinition as defined by the user.