- JsonConfig.java
Код: Выделить всё
@ComponentScan(basePackageClasses = {ru.vniiem.mcc.initstateservice.models.UserModel.class })
public class JsonConfig {
private static final Logger LOG = LogManager.getLogger(JsonConfig.class);
@Autowired
public UserModel[] usrModel;
@Bean
public void usersLog(){
LOG.info(usrModel);
}
}
- UserModel.java
@Component
@PropertySource(value = "classpath:users.json ", Factory = JsonPropertySourceFactory.class)
@ConfigurationProperties
публичный класс UserModel {
@Value("${login}")
частная строка входа ;
@Value("${password}")
пароль частной строки;
public UserModel() {
public String getLogin() {
возвращает логин;
public void setLogin(String login) {this.login = логин;
public String getPassword() {
возврат пароля;
public void setPassword(String пароль) {
this.password = пароль;
}
} - JsonPropertySourceFactory.java
публичный класс JsonPropertySourceFactory
реализует PropertySourceFactory {
@Override
public PropertySource createPropertySource(
String name, ресурс EncodedResource)
выдает IOException {
Map readValue = new ObjectMapper()
.readValue(resource.getInputStream(), Map.class);
return new MapPropertySource(" json-property", readValue);
}
}
Код: Выделить всё
[
{"login":"aaa","password":"aaa"},
{"login":"bb","password":"bbb"}
]
Вызвано: com.fasterxml.jackson.databind.exc.MismatchedInputException: невозможно десериализовать значение типа java.util.LinkedHashMap из значения массива (токен JsonToken.START_ARRAY)
в [Источник: (ByteArrayInputStream); строка: 1, столбец: 1]
Я думаю, что мне нужно переделать фабрику, но я не понимаю, что мне нужно делать, потому что PropertySource принимает только Map и java.util.Properties
Подробнее здесь: https://stackoverflow.com/questions/790 ... ework-java
Мобильная версия