Spritzen in private, package-oder öffentlichen Bereich oder einen setter?

Sehe ich viele Java-Beispiele für die Verwendung von dependency injection mit privaten Bereichen ohne öffentlichen setter wie diese:

public SomeClass {
  @Inject
  private SomeResource resource;
}

Aber das ist eine schlechte Idee, wenn die Injektion sollte manuell durchgeführt werden zum Beispiel in unit-tests.

Gibt es mehrere Möglichkeiten, um dieses Problem zu lösen:

  • fügen Sie einen öffentlichen setter: setSomeResource(SomeResource r)
  • das Feld der öffentlichen
  • das Feld Paket geschützt

Möchte ich vermeiden, setter, da ist nichts wirklich passiert, in es. Also ich würd lieber die öffentlichen oder das Paket geschützt. Was empfehlen Sie?

InformationsquelleAutor deamon | 2010-01-07
Schreibe einen Kommentar