Before diving into Guice injection, let's look at the DI pattern again, along with JSR-330, in brief.
A dependency injection mechanism enables an object to pass dependencies to another object. In Java, using DI, we can move dependency resolution from compile time to runtime. DI removes hard dependency between two Java classes; this allows us to reuse class as much as and also classes are independently testable.
Java Specification Request-330: There is a different way to define dependency in Java classes, but @Inject and @Named are the most common annotations used to describe dependencies in Java classes from JSR-330. According to JSR-330, objects can be injected into the class constructor, the parameter ...