Хорошо, у меня есть config.properties
..:
market.curpairs[0].name=EuroDollar
market.curpairs[0].symbol=EURUSD
market.curpairs[0].minamount=0.1
market.curpairs[1].name=EuroFranken
market.curpairs[1].symbol=EURCHF
market.curpairs[1].minamount=0.1
market.currs[0].name=Euro
market.currs[0].symbol=EUR
market.currs[0].minamount=1.0
market.currs[0].withfee=0.1
market.currs[1].name=Dollar
market.currs[1].symbol=USD
market.currs[1].minamount=1.0
market.currs[1].withfee=0.1
market.currs[2].name=Franken
market.currs[2].symbol=CHF
market.currs[2].minamount=1.0
market.currs[2].withfee=0.1
который я затем пытаюсь ввести в MarketConfig.java
следующим образом:
@PropertySource("classpath:config.properties")
@ConfigurationProperties(prefix = "market")
@Validated
public class MarketConfig {
// the configured currencies
private List<MarketCurrency> currs;
// the configured currencypairs
private List<MarketCurrencypair> curpairs;
/* static classes */
public static class MarketCurrency {
String name;
String symbol;
double minamount;
// getter and setter ommitted
}
public static class MarketCurrencypair {
String name;
String symbol;
double minamount;
double withfee;
// getter and setter ommitted
}
// getter and setter ommitted
}
.. который затем используется в MarketService.java
:
@Service
public class MarketService implements IMarketService {
private final MarketConfig config;
// ....
public MarketService(MarketConfig config) {
this.config = config;
}
// ....
public void printConfig() {
System.out.println("________________ CONFIGURATION: ");
this.config.getCurpairs().forEach(System.out::println);
this.config.getCurrs().forEach(System.out::println);
}
}
... который вызывается Applicationmain
:
@SpringBootApplication
@EnableSwagger2
@ComponentScan
@EnableConfigurationProperties({MarketConfig.class})
public class MarketApplication implements CommandLineRunner {
private final MarketService service;
/**
* Constructor
* @param service ..the Service
*/
public MarketApplication(MarketService service) {
this.service = service;
}
public static void main(String[] args) {
SpringApplication.run(MarketApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
this.service.printConfig();
}
}
... уступая мне NullPointerException
Caused by: java.lang.NullPointerException: null
at forex.market.service.MarketService.printConfig(MarketService.java:67) ~[classes/:na]
1:
Я делаю это правильно, в основном?
2:
Я не смог найти какую-либо помощь в Интернете, как обрабатывать массивы примитивных кортежей в файлах свойств, возможно ли вообще вставить это в конфигурацию с загрузочной пружиной - или мне нужно переписать мою конфигурацию в строки, используя * 1027? * чтобы получить индивидуальные значения (которые я действительно не хочу ради удобства обслуживания и читабельности)?
Заранее спасибо - если вы пропустите какую-либо информацию / источник, пожалуйста, прокомментируйте, я предоставлю ее в ближайшее время.