I noticed interesting Spring feature. One of my colleagues used it for loading whole inheritance tree of Spring beans into list. Missed that when I was studying Spring docs.
Let’s have this inheritance tree of Spring beans:
Not let’s load inheritance tree of beans into list with constructor injection:
@Component public class Nature { List<Animal> animals; @Autowired public Nature(List<Animal> animals) { this.animals = animals; } public void showAnimals() { animals.forEach(animal -> System.out.println(animal)); } }
Method showAnimals is using Java 8 lambda expression to output loaded beans into console. You would find a lot of reading about this new Java 8 feature these days.
Spring context is loaded by this main class:
public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringContext.class); Nature nature = context.getBean(Nature.class); nature.showAnimals(); } }
Console output:
PolarBear [] Wolf [] Animal [] Grizzly [] Bear []
This feature can be handy sometimes. Source code of this short example is on Github.
2 thoughts on “Load inheritance tree into List with Spring”