Gute Möglichkeiten gegeben haben, eine andere offensichtliche Antwort ist, die verwenden PropertyPlaceholderConfigurer:
<context:property-placeholder
system-properties-mode="OVERRIDE"
location="classpath:database.properties" />
<bean id="dataSource" class="com.whatever.datasource.you.Use">
<property name="password" value="${database.password}" />
</bean>
Jetzt können Sie Ihr Passwort in einem Eigenschaften entweder als Eigenschaft halten Datei (die Sie bei der Bereitstellung erstellen können wenn Sie es nicht im SCM haben wollen) oder als eine Systemeigenschaft (die hoffentlich auch für andere Entwickler unerreichbar ist).
Klarstellung:während des Einsatzes erstellen ist etwas vage. Ich denke, Sie müssen ein Installationsprogramm schreiben, das die Eigenschaftendatei dynamisch auf dem Computer des Endbenutzers generiert, wahrscheinlich gekoppelt mit einem Anmelde-/Anmeldeverfahren.
EDIT: Ich habe noch nicht herausgefunden, wer Sie die Informationen aus verbergen. Zwei Theorien:
a) Personen, die Zugriff auf den Quellcode haben
b) Ihre Kunden
Wenn es a) ist, dann meinen Weg gehen. Alle anderen Möglichkeiten können leicht durch den anderen Entwickler verletzt werden, indem Sie einfach Ihre Anwendung mit einem Debugger starten (und plötzlich befindet er sich im Datenquellenobjekt und sieht das Passwort).
Wenn es b) ist, dann haben Sie grundsätzlich keine Chance. Der Kunde hat jede Menge Möglichkeiten, um sein Passwort zu bekommen: Debugger, Agenten, Bytecode-Manipulation, Loadtime-Weben usw. Auch wenn er nichts davon tut, muss er nur einen Port-Sniffer anhängen, um das Passwort klar zu bekommen Text. Die einzige sichere Sache ist, einen Benutzernamen/ein Passwort pro Kunde zu haben (niemals ein globales Passwort auf dem Rechner Ihres Kunden speichern).
Dies wäre flexibler, wenn Sie das Dekoratormuster (z. B. Ihre Datenquelle enthält eine andere Datenquelle und leitet alles außer dem Passwort weiter) –
Touche SP! Das war eine schnelle, um zu zeigen, dass es gemacht werden kann. Aber das OP kann es so umgestalten, wie er es will. – CoolBeans
danke schönen Tipp! – blow