2014-02-05 3 views
0

Я недавно начал работать над ПЛОХО разработан и создан веб-приложения .. Я нахожу, что он использует около 300 файлов свойств, и все файлы свойств в настоящее время несколько читается как это:Java WebApplication - свойства файла кошмар

Properties prop= new Properties(); 
FileInputStream fisSubsSysten = new FileInputStream("whatever.properties"); 
prop.load(fisSubsSysten); 

То есть, он считывает файлы свойств из текущего рабочего каталога. Еще одна проблема заключается в том, что разработчики решили использовать вышеуказанные строки несколько раз в одном и том же файле java. Например, если существует 10 методов, каждый метод будет иметь вышеуказанный код вместо одного метода и вызывать его там, где это необходимо.

Это означает, что мы НИКОГДА не можем изменить местоположение файлов свойств, в настоящее время они находятся под каталог профилей websphere, не является ли это уродливым? Если я перемещаю их где-то еще и устанавливаю это местоположение в classpath, это не сработает.

Я попытался изменить эти строки, как это с помощью Spring IO Utils библиотеки:

Resource resource = new ClassPathResource("whatever.properties"); 
    Properties prop = PropertiesLoaderUtils.loadProperties(resource); 

Но это приложение имеет более 1000 файлов, и я нахожу, что невозможно изменить каждый файл .. Как бы вы о рефакторинг этого беспорядка? Есть ли простой способ?

Спасибо!

+2

Во-первых, мои искренние соболезнования. если бы был какой-то худший конкурс кошмаров для программистов, безусловно, ваша проблема будет указана в топ-10, может быть, на 5-й. Действительно, это выглядит как шутка. Ну, на вашем месте, может быть, вы могли бы использовать любой другой загрузчик файлов свойств (например, http://commons.apache.org/proper/commons-configuration/), а затем вы могли бы попытаться заменить все. Вам нужно будет проверить наличие именования, вероятно, придется использовать файл свойств в качестве нового префикса имени свойств и т. Д. Это может быть как ад. Но если переместить файлы, это важно, я бы сделал это. – Leo

ответ

2

В этих случаях «рефакторинг» я использую простой подход поиска и замены. Notepad ++ имеет функцию «найти в файлах», но есть много подобных программ.

Создайте класс, который загружает свойства с помощью метода, вероятно, с параметром имени для файла свойств. Это может быть сингл java или фасоль.

Поиск и замена всех "новых свойств()" строк пустой строкой.

Заменить все строки «load ...» ссылкой на ваш новый класс/метод. Notepad ++ поддерживает замену регулярных выражений, поэтому вы можете использовать имя файла в качестве параметра.

Как только это будет сделано, зайдите в eclipse и запустите «очистку» или «организуйте импорт» и исправьте некоторые ошибки компиляции вручную, если это необходимо.

Этот подход довольно прост и занимает не более 10 минут, если вам повезет, или 1 час, если вам не повезло, т. Е. форматирование кода является способом, и каждый файл выглядит иначе.

Вы можете упростить замену, если вы форматируете проект один раз до этого с длиной линии 300 или более, чтобы каждый оператор java находился на одной строке. Это упрощает поиск и замену, поскольку у вас нет новых строк для рассмотрения.

0

Вы можете попробовать использовать функцию поиска затмения. Например, если вы щелкнете правой кнопкой мыши по методу класса свойств и выберите «Ссылки» -> «Проект», вы получите все место в вашем проекте, где этот метод используется.

enter image description here

Также оттуда, возможно, вы можете попробовать глобальный поиск регулярных выражений и заменить.

1

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

Подумайте о строительстве высотного здания и последующем освоении болтов, которые имеют инфраструктуру, имеют дефект дизайна. Перспектива заменить их все действительно сложна, поэтому соображения о том, как их изменить, и если они действительно действительно нуждаются в замене, немногие, многие или все.

Я предполагаю, что это должна быть основная система для компании, которую кто-то построил, и они, вероятно, оставили проект (?), И у вас есть соображения об улучшении или поддержании их. Но опять же, вы должны оценить, действительно ли важно переместить ваши файлы свойств, или если вы можете просто использовать символические ссылки в своей файловой системе. Кроме того, вам действительно нужно переместить их все или есть только несколько, которые действительно выиграют от перемещения. Можете ли вы просто пометить все места в коде маркером, который должен быть исправлен позже. Иногда я отмечаю неудачные классы с устареванием и обещаю исправить затронутые классы, но отложить до тех пор, пока у меня не будет изменений в этих классах, пока, наконец, устаревший класс не будет удален.

В любом случае, вы должны оценить свои варианты, оставить файлы, заменить все или частичные, а также дать некоторую оценку стоимости и последствий и спросить своего менеджера, какой курс взять.

Просто обратите внимание, что всегда переоценивайте решение, которое вы не хотите делать, так как вы в два раза чаще останавливаетесь на кофе-брейках, а рекламный щит сказал вам, что это отличный рычаг для принятия решений :)

На технологической стороне вашего вопроса поиск и замена регулярных выражений - это, пожалуй, единственный вариант. Обычно я помещал файлы конфигурации в место, доступное через classpath.

Смежные вопросы