Guice best practices and anti-patterns

dependency-injection, design-patterns, guice, java

Solution

I have always felt that constructor injection to final fields is a best practice. It minimizes mutable state and makes the class easier to understand by making the class's formal dependencies explicit.

public class MyClass {
    private final MyDependency dependency;

    @Inject
    public MyClass(MyDependency dependency) {
        this.dependency = dependency;
    }
}

Problem

I'm not sure if there is merit to this question or not, but are there any best practices and anti-patterns specific to Google Guice? Please direct any generic DI patterns to this question.

Original source