
A powerful feature of Strecks is the ability to populate action bean properties with dependencies. 
Dependencies range from those specific to a request to application-wide dependencies. 
The extensible dependency injection framework allows dependencies to be resolved from any object accessible via the 
HttpServletRequest (and hence HttpSession), the HttpServletResponse, 
the ServletContext, the 
Struts ActionForm and Struts ActionMapping.
Applying the dependency injection annotations is very straightforward. Simply add the annotation to an action bean setter method, and add any necessary attributes. An example is shown below:
@Controller(name = BasicSubmitController.class)
public class SubmitNewBookingAction implements BasicSubmitAction
{
	private HolidayBookingForm form;
	private HolidayBookingService holidayBookingService;
	private WebHelper webHelper;
	public void preBind()
	{
		form.setBooking(new HolidayBooking());
	}
	public String cancel()
	{
	  //implementation omitted
		return "success";
	}
	public String execute()
	{
	  //implementation omitted
		return "success";
	}
	@InjectActionForm
	public void setForm(HolidayBookingForm form)
	{
		this.form = form;
	}
	@InjectSpringBean(name = "holidayBookingService")
	public void setHolidayBookingService(
				 HolidayBookingService holidayBookingService)
	{
		this.holidayBookingService = holidayBookingService;
	}
	@InjectWebHelper
	public void setWebHelper(WebHelper webHelper)
	{
		this.webHelper = webHelper;
	}
}
In the next section we describe the dependency injections annotations currently available.
Allows the ActionForm currently associated with the request to be injected into an action bean property. May be null.
Allows the ActionForm currently associated with the request to be injected into an action bean property. Will never be null.
Allows the application's ServletContext to be injected into an action bean property. Will never be null.
Allows a named ServletContext attribute to be injected into an action bean property. May be null.
| name | Specifies the name of the attribute. Defaults to the JavaBean property name | 
| autocreate | Whether to instantiate an object if none is present. Default is false. Requires injected type to be a class with a no-arguments constructor | 
Injects the current request Locale into the action bean.
Injects a set of message resources into the action bean. May return null.
| bundle | The name of the resource bundle. Defaults to default resource bundle, if one is available. | 
Injects a MessageResourcesHelper instance into the action bean. 
The MessageResourcesHelper
wraps the MessageResources for the named bundle, as well as the current request locale.
It exposes two methods for retrieving messages from the message resources for the 
current request locale.
public String getMessage(String key); public String getMessage(String key, Object... params);
Note that the second mechanism uses the Java 5 varargs mechanism to allow for an arbitrary number of message parameters.
| bundle | The name of the resource bundle wrapped by the MessageResourcesHelperinstance. 
	Defaults to default resource bundle, if one is available. | 
Injects a RedirectHelper object into the action bean. RedirectHelper is useful for implementing the 
Redirect After Post pattern in the context of a form submission.  Will not be null.
Injects a named redirect parameter object into the action bean. May be null. Redirect parameters are session attributes which only remain in the session for the lifetime of a single redirect, and are useful in propogating state during a redirect after post.
Injects the current HttpServletRequest into the action bean. Will never be null.
Allows a named HttpServletRequest attribute to be injected into an action bean property. May be null.
| name | Specifies the name of the attribute. Defaults to the JavaBean property name | 
| autocreate | Whether to instantiate an object if none is present. Default is false. Requires injected type to be a class with a no-arguments constructor | 
Injects a named HttpServletRequest parameter into the action bean. 
If necessary, the value will be type converted using the specified or implicit converter,
allowing for non-String request parameters to be bound to the action bean without code.
| name | Specifies the name of the parameter. Defaults to the JavaBean property name | 
| converter | The Converterclass to be used for type conversion. Default isStandardBeanUtilsConverter, which can handle
	many basic type conversions | 
| required | Whether the request parameter must be present. Defaults to false. If true, then a missing request parameter value generates a runtime exception and should be interpreted as a programming error | 
Injects the current HttpServletResponse into the action bean. Will never be null.
Allows a named HttpServletRequest, HttpSession or ServletContext 
attribute to be injected into an action bean property. Searches for the 
attribute in the order just specified. May be null. Useful when the attribute may
exist in more than one of the above-named scopes.
| name | Specifies the name of the attribute. Defaults to the JavaBean property name | 
Allows a named HttpSession attribute to be injected into an action bean property. May be null.
| name | Specifies the name of the attribute. Defaults to the JavaBean property name | 
| autocreate | Whether to instantiate an object if none is present. Default is false. Requires injected type to be a class with a no-arguments constructor | 
| required | Whether the session attribute must be present. Defaults to false. If true, then a missing session attribute generates a runtime exception and should be interpreted as a programming error | 
Allows a named Spring bean to be injected into an action bean property. Cannot be null. If so, a runtime exception will be thrown, indicating a programming error, resulting either from the incorrect Spring name or an error in the Spring configuration.
| name | Specifies the name of the Spring bean. Defaults to the property name. | 
Injects a WebHelper object, which is useful in allowing access to Servlet API operations without having
to use the Servlet API directly, simplyfying testing of action beans.