Объединить строку, используя ссылки в файле .properties в java

Мой код:

public static InputStream input = null;
public static Properties prop = new Properties();

static public void getConstants(){ 
    Constants constants = new ConstantsEng();
    try {

        input = CLASS_NAME.class.getClassLoader().getResourceAsStream("FILE_NAME.properties");

        prop.load(input);
    } catch (IOException e) {
        e.printStackTrace();
    }

public static String SOURCE = prop.getProperty("SOURCE");
public static String SOURCES = prop.getProperty("SOURCES");
public static String DESTINATION = prop.getProperty("DESTINATION");
public static String DESTINATIONS = prop.getProperty("DESTINATIONS");

FILE_NAME.properties

SOURCE=Source
SOURCES=${SOURCE}s
DESTINATION=Destination
DESTINATIONS=${DESTINATION}s

Строки отображаются с заполнителями при рендеринге:

Объединить строку, используя ссылки в файле .properties в java

Я хочу повторно использовать строки в моем файле .properties, но этот код не работает. Есть ли способ обойти это, или я делаю ошибку?

Когда я получаю:

public static String SOURCES = prop.getProperty("SOURCES");

Я ожидаю "Источники" в качестве вывода.

Не могли бы вы опубликовать ожидаемый результат, а не размещать изображение?

Darshan Mehta 05.02.2019 11:12

когда я получаю общедоступную статическую строку SOURCES = prop.getProperty("SOURCES"); Я ожидаю "Источники" в качестве вывода.

Rakesh 05.02.2019 11:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
328
2

Ответы 2

Вы можете использовать "%s" в файле свойств для композиции String:

SOURCE=Source
SOURCES=%ss

Затем вам нужно будет отформатировать строку:

public static String SOURCES = String.format(prop.getProperty("SOURCES"), prop.getProperty("SOURCE"));

Рассматривали ли вы возможность использования Apache commons-configuration?

Зависимость для добавления в pom.xml

<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>1.6</version>
</dependency>

Ваш класс будет таким

import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

public class Configurations {
    private CompositeConfiguration config;

    public void getConstants() throws ConfigurationException {
        config = new CompositeConfiguration();
        config.addConfiguration(new PropertiesConfiguration("test.properties"));
    }

    public CompositeConfiguration getConfig() {
        return config;
    }

    public static void main(String... args) throws ConfigurationException {
        Configurations config = new Configurations();
        config.getConstants();

        System.out.println(config.getConfig().getString("SOURCE"));
        System.out.println(config.getConfig().getString("SOURCES"));
    }
}

тест.свойства

SOURCE=Source
SOURCES=${SOURCE}s
DESTINATION=Destination
DESTINATIONS=${DESTINATION}s

Другие вопросы по теме