Google Guice (my favorite DI framework for Java) has a neat extension called "Multibindings" that allows you to auto-magically inject a collection of objects that implement a particular interface. This allows you to model SPI-style interfaces with ease.