One of my favorite features in Model-Glue, suggested and originally implemented by Sean Corfield, is autowiring. With autowiring, if you create a method named setSomeService() on a Controller, the framework will automatically search a ColdSpring bean factory for a bean named "someService" and set it into the controller.
It's super-cool, but it requires some explicit, repetitive code: writing nearly identical setters on your controller for the services it needs.
Model-Glue 3's code name is "Gesture," and it stands for declarative workflows and elimination of boilerplate. Clearly, something had to be done about all these setters that just serve as a marker for autowiring.
In Model-Glue 3, this "something" is a new attribute on the <controller /> tag called "beans":
Inside of each Model-Glue controller is a new scope called "beans" (really, it's just a struct in variables....). When the framework loads, it automagically sets any beans listed in the "beans" attribute of <controller /> into the "beans" scope, keyed by beanId, no setter required.
In other words, as soon as I reload the framework with the above <controller /> tag, I can do this in any listener function: