Существует также «пружинный» способ, который заключается в использовании файла свойств, и бина, который извлекает значение из свойств и внедряет их в классы, которые в них нуждаются, например ::
<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:configuration.properties" />
</bean>
и затем вы можете ввести свойства с "муравьиным" синтаксисом:
<bean id="connectionPool" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<property name="databaseName" value="mydb" />
<property name="url" value="${db.url}" />
...
, что, вероятно, повлечет за собой больше переписывания, чем вы хотели бы. Если вы собираетесь изменять константы в каждой компиляции, я бы остерегался этой ошибки (если вы используете статические финалы).
public class Foo {
public static final int SOME_CONSTANT=1;
..
}
public class Bar {
...
int x=5+Foo.SOME_CONSTANT;
...
}
Если вы затем измените SOME_CONSTANT в Foo на 2, но не перекомпилируете Bar, Bar сохранит значение 1 для SOME_CONSTANT, так как статические финалы скомпилированы (поскольку компилятор видит, что ему не нужно вычислять их снова).