Слить строку, используя ссылки в файле .properties в Java - PullRequest
0 голосов
/ 05 февраля 2019

Мой код:

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

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

Output

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Рассматривали ли вы использование 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"));
    }
}

test.свойства

SOURCE=Source
SOURCES=${SOURCE}s
DESTINATION=Destination
DESTINATIONS=${DESTINATION}s
0 голосов
/ 05 февраля 2019

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

SOURCE=Source
SOURCES=%ss

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

public static String SOURCES = String.format(prop.getProperty("SOURCES"), prop.getProperty("SOURCE"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...