Class AbstractBeanSelectionProvider

java.lang.Object
org.apache.struts2.config.AbstractBeanSelectionProvider
All Implemented Interfaces:
BeanSelectionProvider, ConfigurationProvider, ContainerProvider, PackageProvider
Direct Known Subclasses:
StrutsBeanSelectionProvider

public abstract class AbstractBeanSelectionProvider extends Object implements BeanSelectionProvider
Base implementation of BeanSelectionProvider that provides bean aliasing functionality.

This class provides the alias(Class, String, ContainerBuilder, Properties, Scope) method which is used to select and register bean implementations based on configuration properties.

Bean Selection Process

The alias method selects a bean implementation using the following process:

  1. Read the property value for the given key from the configuration properties
  2. If no property is set, use "struts" as the default bean name
  3. Check if a bean with that name already exists in the container:
    • If found, alias it to Container.DEFAULT_NAME making it the default
    • If not found, try to load the property value as a fully qualified class name
  4. If class loading succeeds, register the class as a factory for the interface type
  5. If class loading fails and the name is not the default, create a delegate factory that will resolve the bean through ObjectFactory at runtime. This allows Spring bean names to be used in configuration.

Usage Example

 // In struts.properties or struts.xml:
 // struts.objectFactory = spring
 // struts.converter.collection = myCustomCollectionConverter

 // In a subclass:
 alias(ObjectFactory.class, StrutsConstants.STRUTS_OBJECTFACTORY, builder, props);
 alias(CollectionConverter.class, StrutsConstants.STRUTS_CONVERTER_COLLECTION, builder, props);
 
See Also: