Какой предпочтительный способ доступа к настройкам внутри приложения? - PullRequest
1 голос
/ 01 марта 2011

В настоящее время у меня происходит синглтон (сервисный локатор), где я получаю свои настройки через что-то вроде Services.getSettings().get("my.setting");. Подобные вызовы свободно распространяются вокруг кода в любом месте, где могут потребоваться значения настроек. Это прекрасно работает, но я не могу не почувствовать, что это не «правильный» способ сделать это (самым неприятным моментом является тот факт, что все связано с этим глобальным объектом). Каковы были бы лучшие (в смысле «лучших практик») способы доступа к настройкам во всем приложении? Если это помогает, я не говорю о веб-приложениях. Я говорю об автономных приложениях, будь то рабочий стол на стороне сервера. О, и это на Java, так как я знаю, что вы спросите ... Это не должно иметь значения, потому что я ищу концепции, а не конкретные реализации.

Ответы [ 6 ]

2 голосов
/ 01 марта 2011

В прошлом я выводил настройки для различных классов в своем приложении (java) в файле XML, и я использовал «Контейнер инверсии управления (IoC)» ( Spring Framework ) для их внедрения,Я считаю этот подход очень полезным, потому что он также помогает в экстернализации объектных зависимостей.

2 голосов
/ 01 марта 2011

для настольных приложений Java Используйте

Или используйте следующий файл для хранения настроек на каком-либо платформо-независимом пути (${user.home})

  • Файл свойств

  • XML-файл

1 голос
/ 01 марта 2011

Если используется внедрение зависимостей, вы можете ввести значения в целевые объекты.В противном случае это хороший способ сделать это.

0 голосов
/ 01 марта 2011

В Java есть Preferences API . По сути, это стандартизированная версия службы настроек, которая загружает конфигурацию из разных разумных мест. Это может быть улучшением по сравнению с тем, как вы делаете вещи в данный момент, но это на самом деле не меняет архитектуру, которая, похоже, является тем, чем вы недовольны.

С точки зрения архитектуры, то, что вы могли бы после, это внедрение зависимостей; это тема, о которой так много написано, что мне бесполезно ее описывать. Идея заключается в том, что какая-то внешняя сила берет на себя задачу загрузки настроек и передачи их вашим классам, а не тому, что ваш код должен тянуться и извлекать их. Внедрение зависимостей обычно связано с веб-приложениями, но вполне возможно использовать это в автономных приложениях. Я думаю, что это даже довольно просто с PicoContainer; Я понятия не имею о весне.

0 голосов
/ 01 марта 2011

всегда есть

Обычная Java Свойства и для настроек, специфичных для локали, есть ResourceBundle

, их также можно внедрить с помощью некоторой DI Framework, напримерSpring / Guice и др.

вот некоторые уроки и примеры

надеюсь, что помогло

0 голосов
/ 01 марта 2011

Если значение my.setting будет оставаться постоянным до тех пор, пока приложение работает, я бы хотел сохранить значение в константе.

private static final String MY_SETTING = 
    Services.getSettings().get("my.setting");

И используйте MY_SETTING везде в этом классе. Вы можете изменить модификатор доступа соответственно.

...