Были заданы хорошие варианты, другой очевидный ответ - использовать 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>
Теперь вы можете сохранить свой пароль либо как свойство в файле свойств (который выможет создаваться во время развертывания, если вы не хотите иметь его в SCM) или как системное свойство (которое, мы надеемся, также будет недоступно для других разработчиков).
Уточнение: создать во время развертывания несколько расплывчато.Я предполагаю, что вам придется написать установщик, который динамически генерирует файл свойств на компьютере конечного пользователя, возможно, в сочетании с механизмом регистрации / входа.
РЕДАКТИРОВАТЬ: Iдо сих пор не понял, от кого ты скрываешь информацию.Две теории:
а) Люди, которые имеют доступ к вашему исходному коду
б) Ваши клиенты
Если это а), тогда иди по моему пути.Все остальные способы могут быть легко нарушены другим разработчиком, который просто запустит ваше приложение с помощью отладчика (и вдруг он окажется внутри объекта источника данных и увидит пароль).
Если это b), то у вас нет шансов, в основном,У клиента есть масса возможностей получить ваш пароль: отладчики, агенты, манипуляции с байт-кодом, ткачество во время загрузки и т. Д. Даже если он этого не делает, ему просто нужно подключить анализатор портов, чтобы получить пароль в открытом виде.текст.Единственное, что нужно сделать, - это ввести имя пользователя / пароль для каждого клиента (никогда не храните глобальный пароль на компьютере вашего клиента).