Мой код:
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, но этот код не работает. Есть ли способ обойти это, или я делаю ошибку?
Когда я получаю:
public static String SOURCES = prop.getProperty("SOURCES");
Я ожидаю "Источники" в качестве вывода.
когда я получаю общедоступную статическую строку SOURCES = prop.getProperty("SOURCES"); Я ожидаю "Источники" в качестве вывода.




Вы можете использовать "%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
Не могли бы вы опубликовать ожидаемый результат, а не размещать изображение?