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”