Best Practice Login-Daten: Wie am besten abrufen?

DrJim

Mitglied
Hallo zusammen,

welche Best Practices gibt es zum Thema Login-Daten? Also wie macht es aus Software-Architektur-Sicht am meisten Sinn Login-Daten z.B. für Datenbanken oder FTP-Server im Java-Programm zu nutzen?

Konkreter Grund meiner Frage: Ich möchte an zentraler Stelle alle für mein Java-Programm nötigen Variablen der jeweiligen Umgebung pflegen können, sodass ich bei der Nutzung des Programms in einer neuen Umgebung nur an einer zentralen Stelle alle User-Daten wie MySQL-Login und FTP-Login ändern muss.

Aktuell speichere ich alle diese Daten in Variablen in der auszuführenden Java-Klasse. In der Main werden dann Objekte wie FtpManager und DbManager erstellt, welchen die jeweiligen Login-Daten mitgegeben werden. Diese Objekte werden aber eigentlich erst in Methoden von viel konkreteren Klassen genutzt, sodass sie von Funktion zu Funktion weitergegeben werden.

Schön ist das so nicht und auch nicht gerade das, was man sich unter guter objektorientierter Programmierung vorstellt. Wie macht ihr das bzw. wie sollte man so etwas machen?

Besten Gruß!
 

stg

Top Contributor
Kommt immer drauf an.
z.B. in einer ausgelagerten text/xml/schießmichtot-Datei, welche bei Programmstart gelesen wird.
Anschließend per Factory ein Connection-Object oder was auch immer benötigt wird, erstellen und zurückgeben.
 

DrJim

Mitglied
Factory-Klassen habe ich bisher nur in der Theorie kennen gelernt, wahrscheinlich verstehe ich den Ansatz desshalb noch nicht ganz.

Wenn ich bei Programmstart eine xml-Datei einlese und mit den Paramtern ein Factory-Objekt erstelle, habe ich doch immer noch die Situation, dass ich dieses Objekt von Klasse zu Klasse weiterreichen muss, bis ich es irgendwann in den konkreteren Klassen verwende. Oder werden Factories statisch verwendet, sodass ich beim Programmstart die Klassenvariablen setze und dann später darauf zugreifen kann ohne eine Objekt durchzureichen?
 

stg

Top Contributor
Ob statisch oder nicht, ist eigentlich nicht ganz so wichtig bzw hängt das mitunter wieder von ganz anderen Dingen ab (Coding-Guidelines, Umfeld, ... )

Wichtig ist vielmehr, dass du die ganze Komplexität der Initialisierung, der Erstellung der benötigten Objekte usw nach außen hin verbirgst und nicht etwa von außen die benötigten Verbindungsparameter usw setzt.

Wenn du es gern statisch haben magst, dann könntest du das hier als ersten Ansatz nehmen:

Java:
public final class DbManagerFactory {

    private static String PASSWORD;
    private static String USER;

    static {
        // hier die Verbindungsparameter initialisieren
    }

    private DbManagerFactory() { };

    // statische Factory-Methode
    public static DbManager getDbManager( /* weitere optionale Parameter */) {  // 
        // erstelle hier den DbManager und gib ihn zurück
    }
    
}

Nun kannst du ganz egal wo du den DBManager brauchst einfach per DbManagerFactory.getDbManager() einen anfordern. Ob das nun immer der gleiche ist, oder immer ein neuer erstellt wird, oder sogar DbManager nur ein Interface ist und du anhand eines optionalen Parameters entscheidest, welche Implementierung zurückgegeben wird usw, all das kommt dann wieder auf den Einzelfall an. Viel wichtiger ist wie gesagt eigentlich nur, dass dein restlicher Code sich gar nicht dafür zu interessieren braucht, was da intern alles genau passiert.
 

DrJim

Mitglied
Super danke, ich glaube das hilft schon ungemein. Nun noch eine "Kunstbanausen-Frage": Wo liegt genau der Vorteil einer Factory-Klasse? Könnte ich das, was die Factory macht, also einen DbManager mit den Login-Daten aus der XML erstellen, nicht genauso gut in den Constructor der DbManager-Klasse packen? Dann könnte man auch bei Bedarf zu einem beliebigen Zeitpunkt ein Objekt erstellen, dass über die Db-Login-Daten verfügt.
 

stg

Top Contributor
In einfachen Fällen kann man das machen und um kein "Over-Engineering" zu betreiben, ist das oft sogar auch sinnvoll.

Was aber, wenn dein DbManager ein relativ kompliziertes Objekt ist, was sich aus einer Vielzahl an Klassen zusammensetzt, diverse Abhängigkeiten aufweist usw. Außerdem ist es durchaus denkbar, dass für verschiedene Konfigurationen und/oder Systemumgebungen der DbManager mit anderen Werten initialisiert werden muss, oder aber sogar ganz verschiedene Implementierungen hergenommen werden müssen.
Da bietet es sich oft an einfach nur ein Interface DbManager sowie die passende Factory nach außen hin preiszugeben. Im restlichen Code benutzt du dann überall nur die Factory, um eine Instanz zu bekommen und programmierst ausschließlich gegen das Interface DbManager. Der Rest interessiert dort nicht.
Das sieht dann so aus:
IC400941.png
(Quelle: msdn.microsoft.com)

Hierbei ist dann Client die Klasse, in der du den DbManager brauchst. Creator ist die Factory-Klasse, IProduct entspricht dem DbManager-Interface und ProductA und ProductB sind verschiedene konkrete Implementierungen des DbManagers.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
A Login-Daten Formular automatisch ausfüllen Allgemeine Java-Themen 10
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
OnDemand Login 2 Faktor Allgemeine Java-Themen 7
E Java Website Login Allgemeine Java-Themen 2
B Login für User, der im Hintergrund Schedules ausführt Allgemeine Java-Themen 16
H HTTP Website-Login Allgemeine Java-Themen 5
T Login lässt App crashen! Allgemeine Java-Themen 14
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
M Login in eine Webseite mit Java Allgemeine Java-Themen 3
F Login einfach "ausbauen" Allgemeine Java-Themen 10
C Login System Allgemeine Java-Themen 19
L Methoden Automatischer login auf einer seite Allgemeine Java-Themen 3
L Login auf website per Java Allgemeine Java-Themen 13
T Login-Abfrage Allgemeine Java-Themen 3
T Login mit LDAP-Abfrage Allgemeine Java-Themen 3
D Login Allgemeine Java-Themen 10
R Login auf einer SSL-Webseite Allgemeine Java-Themen 7
D Problem mit Login in einem Dynamischen Webprojekt Allgemeine Java-Themen 1
A Java | Login-System Allgemeine Java-Themen 3
A Login ausfüllen und abschicken... Allgemeine Java-Themen 19
D Suche Librarys ähnlich datatables.net + Login Allgemeine Java-Themen 3
C .jar bei Login starten Allgemeine Java-Themen 7
C Login auf Website mit Cookies Allgemeine Java-Themen 3
T Website-Login via Java Allgemeine Java-Themen 22
D Login schützen... Allgemeine Java-Themen 13
R Login Allgemeine Java-Themen 5
M TomCat Login Allgemeine Java-Themen 19
P Login- Fenster Allgemeine Java-Themen 11
B User Login: JPasswordField + JPasswordField_wdh vergleichen Allgemeine Java-Themen 2
G Servlet Register/Login-Prozedur Allgemeine Java-Themen 9
M Login script mit java Allgemeine Java-Themen 3
S SMTP-AUTH-Login Allgemeine Java-Themen 2
W Internet Seite mit login 1x od. 2x Allgemeine Java-Themen 5
R Problem mit Login in einen Chat Allgemeine Java-Themen 5
N Java login für HTML Seite Allgemeine Java-Themen 6
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
padde479 Collections Daten in Dreiecksform Allgemeine Java-Themen 13
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
A Hartgecodete Daten auslagern Allgemeine Java-Themen 4
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
S Webservices für binäre Daten? Allgemeine Java-Themen 5
OnDemand Daten in RAM zwischenspeichern oder lieber aus DB holen? Allgemeine Java-Themen 24
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
S Entities aus XML - Daten. Allgemeine Java-Themen 1
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
C Daten für Klassifikationsverfahren gewinnen Allgemeine Java-Themen 6
J Daten von Quelltext Allgemeine Java-Themen 5
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
J Jasper Reports - Daten vom Hoster Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
R Android Daten online senden Allgemeine Java-Themen 0
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
K Gespeicherte Daten von einer LinkedList auf vier LinkedList verteilen Allgemeine Java-Themen 6
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
S Erste Schritte Fehlender Gedanken-Ansatz bei Interpretation von Daten Allgemeine Java-Themen 1
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
L Best Practice Log Dateien analysieren und eventuell passende Daten am Chart darstellen Allgemeine Java-Themen 1
J Serial Port Daten empfangen Allgemeine Java-Themen 5
H Daten via COM Schnittstelle erhalten Allgemeine Java-Themen 2
J Daten persistent speichern Allgemeine Java-Themen 14
S Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..? Allgemeine Java-Themen 6
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
G Daten aus Website auslesen Allgemeine Java-Themen 7
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
O Serial Port Daten als Tastaturanschlag senden Allgemeine Java-Themen 0
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
Z daten bindung Allgemeine Java-Themen 1
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
A Daten in Formularen/Vorlagen erstellen und ausdrucken Allgemeine Java-Themen 3
C HtmlUnit Daten einer Tabelle bekommen ohne, dass diese eine ID aufweist Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
OnDemand PC identifizieren / Daten auslesen Allgemeine Java-Themen 15
G Combobox füllen mit daten aus einer Tabelle Allgemeine Java-Themen 4
J Maven .war enthält veraltete Daten Allgemeine Java-Themen 3
N Daten aus Jar laden Allgemeine Java-Themen 10
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
T Daten effizient verwalten Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben