Java EE provides a framework such as CDI. With CDI, we can inject any container-controlled object into another with compile-time type safety. The problem, though, is the objects in question need to be container controlled, which our MongoDB API objects are not. Fortunately, CDI provides a means by which the container can create these instances, a facility known as producer methods. What might this look like? Let's start with the injection point, as that is the simplest piece:
@Inject @Collection("notes") private MongoCollection<Document> collection;
When the CDI container sees @Inject, it inspects the element the annotation is on to determine the type. It will then attempt to look up an instance that will satisfy ...