- 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
public class UserModel {
@Value("$ {login}")
частный строковый вход;
@Value("${password}")
частный строковый пароль;
public UserModel() {
}
public String getLogin() {
возвращает логин;
public void setLogin(String login) {
this.login = login;
public String getPassword() {
возврат пароля;
}
public void setPassword(String пароль) {
this.password = пароль;
} - JsonPropertySourceFactory.java
открытый класс JsonPropertySourceFactory
реализует PropertySourceFactory {
@Override
public PropertySource createPropertySource(
Имя строки, ресурс EncodedResource)
выдает IOException {
Map readValue = new ObjectMapper()
.readValue(resource.getInputStream(), Map. class);
return new MapPropertySource("json-property", readValue);
}
}
Вызвано: 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