Customizable injection of bean properties, based on http://code.google.com/p/google-guice/wiki/CustomInjections.
For example:
new AbstractModule() {
@Override protected void configure() {
bindListener( Matchers.any(), new BeanListener( new MyBeanBinder() ) );
}
}
MyBeanBinder will be asked to supply a PropertyBinder for each bean type, say Foo.
That PropertyBinder will be asked to supply a PropertyBinding for each property (field or setter) in Foo.
Those PropertyBindings are then used to automatically configure any injected instances of Foo.