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.