Сделать IntelliJ осведомленным о файле свойств

Есть ли способ сообщить IntelliJ, что конкретный файл .properties будет загружен в среду проекта? Мы используем аннотации @PropertySource для загрузки файлов свойств, а в некоторых местах загружаем переопределяющие значения из файла, определяемого уже настроенным свойством, например так:

@Configuration
@PropertySource("classpath:com/example/package/db.properties")
@PropertySource("classpath:com/example/package/db.${db.instance}.properties")
public class DatabaseConfig {
    private @Value("${db.someProperty}") String someDBProperty;
    // ...
}

Проблема в том, что в одном из этих файлов, на которые косвенно ссылаются, например. db.test.properties, IntelliJ не знает, ссылаются ли на файл свойств и каким образом, поэтому он не может связать какие-либо записи с их использованием. (Как ни странно, некоторые свойства, перечисленные в этих файлах, не выделены серым цветом, чтобы указать «Неиспользуемое свойство», хотя даже они не дают результатов для поиска «Найти использование»). Нет проблем с файлами с прямыми именами, например. db.properties выше.

Есть ли способ сообщить IntelliJ об этих файлах, кроме создания дополнительных фиктивных файлов @Configuration, которые ссылаются на них?


person Joe Lee-Moyet    schedule 06.02.2015    source источник
comment
Вы когда-нибудь находили решение этой проблемы? В отличие от вашей ситуации, когда я использую SpEL в своем Java-коде, свойства всегда помечаются как неиспользуемые.   -  person Christopher Schneider    schedule 18.10.2015


Ответы (3)


Вот как я это делаю:

  • В проводнике проекта я щелкаю правой кнопкой мыши в src/main/resources, я навожу курсор на «Пометить каталог как ...» и нажимаю «Корень ресурсов».

введите здесь описание изображения

  • В конфигурации Spring я просто напрямую указываю имя файла свойств.

Вот пример, когда я делаю это в одном из своих проектов: https://github.com/SFRJ/springpractice/blob/master/src/main/java/part3/PropertiesLoaderConfiguration.java

Кстати, если вы используете несколько источников свойств, вы также можете сделать что-то вроде этого:

@PropertySources({
        @PropertySource("a.properties"),
        @PropertySource("b.properties")
    })
person javing    schedule 11.06.2015
comment
Спасибо за ваш ответ sfrj, я не уверен, что это отвечает на вопрос - я хочу ссылаться на разные источники свойств в зависимости от уже загруженного свойства. Например. в примере, который я привел, я хочу загрузить конфигурацию для определенного экземпляра базы данных, где используемый экземпляр БД был настроен в другом месте (в моем случае он просматривается во время запуска приложения в зависимости от работающего хоста). - person Joe Lee-Moyet; 11.06.2015
comment
Кроме того, аннотация PropertySources оболочки не требуется из Java 8, которая поддерживает повторяющиеся аннотации. - person Joe Lee-Moyet; 11.06.2015
comment
Моя проблема была другой (более простой). Я хотел открыть файл свойств, используя Properties properties = null; InputStream is = getClass().getClassLoader().getResourceAsStream(mysql.properties) properties.load(is); но это всегда было нулевым. ответ sfrj решил мою проблему - person Mark Ainsworth; 26.10.2015

Просто посмотрите на эту картинку

Это можно установить в структуре проекта. Вы только посмотрите на этот захват.

person BaiJiFeiLong    schedule 25.04.2018

Создайте папку с именем res в своем проекте и сохраните в ней необходимые файлы свойств. Перейдите в Project_Structures -> Modules и выберите вкладку Resources. В вашем коде вы можете получить доступ к файлу ресурсов, используя путь: res/your_file_name.

Прежде чем пометить папку как папку ресурсов введите здесь описание изображения

После пометки папки как папки ресурсов введите здесь описание изображения

person Gunasekar    schedule 22.08.2018