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;
}
}