Apache Struts 2 Documentation > Home > Guides > Contributors Guide > Requirements > Use Cases > Zero Configuration Scanning


One of Zaphod's heads is allergic to XML. Rather than embed metadata in a configuration file, Zaphod annotates his POJO actions instead. The framework scans the designated packages for objects that implement Action or have names that end with "Action". An action mappings is automatically created and registered for each matching class, based on the annotations.


Level   (User Goal, Summary, Subfunction)
Primary Actor  

Main Success Scenario (MSS)

Step Action
1 System loads FilterDispatcher through web.xml, which includes actionPackages parameter
2 FilterDispatcher initializes a Dispatcher, passing along the actionPackages parameter
3 Dispatcher initializes ClasspathConfigurationProvider to hold one or more Configuration Providers
4 Dispatcher adds to the ConfigurationManager object a ClasspathConfigurationProvider to process the actionPackages.
5 (someone) calls loadpackages on ClasspathConfigurationProvider
6 loadpackages utilizes the XWork ResolverUtil to find classes that implement Action or have names suffixed with "Action" in the listed packages. Each found class is added to a set (if not already present), and each class in the set is passed to the processActionClass helper method.
7 processActionClass ascertains the namespace, captures any ParentPackage or Results annotations, and creates an ActionConfig, setting the action name, package name, and results.


Step Branching Action
7a Action suffix
.1 The action name is truncated before any Action suffix.
7b Embedded /
.1 If action name contains a / character, then the first character after the last / is forced to lowercase.
7c On the fly results
.1 Results are wrapped in a ResultMap class that processes the Action class annotations on initialization, creating any new result configuration objects as needed.

Preconditions and Guarantees

Minimal Guarantees  
Success Guarantees  

Stakeholders and Interests

Stakeholder Interest


Step Variation