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.
  
Interfaces
    
  
  
    Classes
    
    
  
        
              | BeanListener | TypeListener that listens for bean types and arranges for their properties to be injected. | 
        
              | BeanProperties | Iterable that iterates over potential bean properties in a class hierarchy. | 
        
              | BeanScheduler | Schedules safe activation of beans even when cyclic dependencies are involved. | 
        
              | DeclaredMembers | Iterable that iterates over declared members of a class hierarchy. | 
        
              | LifecycleManager | BeanManagerthat manages JSR250 beans and schedules lifecycle events. | 
        
              | LifecycleModule | Guice Module that provides JSR250 lifecycle management by following PostConstruct and
 PreDestroy annotations. | 
  
     
  
  
    Annotations
    
    
  
        
              | IgnoreSetters | Annotates class hierarchies that don't want setter injection. | 
  
     
  
  
    Enums