Named Method Injection

Overview

This is where a component has an empty constructor with dependencies passed in via setters and matching done via the method name (after 'set'). Matches are against named components.

public class FruitBasket {
    public void setOrange(String orange) { ... }
    public void setPear(String pear) { ... }
    public void setBanana(String banana) { ... }
    // other methods
}

Usage

pico = new DefaultPicoContainer(new NamedMethodInjection();
pico.addConfig("orange" , new Seville());
pico.addConfig("pear" , new Bartlett());
pico.addConfig("Banana" , new Cavendish());
pico.addComponent(FruitBasket.class);
// etc
FruitBasket basket = pico.getComponent(FruitBasket.class);

Yes that's right, there's no constructor needed. It means that for a Unit Test, you cannot simply 'new' the class without some lines of code to populate the dependency fields via setters.

The component factory for this is a class NamedMethodInjection. It only handles named-method injection for components.