У меня есть класс модели данных NetworkSettingsModel, который должен быть одноэлементным компонентом, чтобы к нему можно было получить доступ в любом месте приложения весенней загрузки.
Его значения успешно инициализируются в сервисном классе NetworkSettingsManager. РЕДАКТИРОВАТЬ, если использование ObjectMapper не является «правильным» способом сопоставления значений с моделью, тогда я прошу, пожалуйста, скажите мне, как я могу это сделать.
Когда происходит событие Spring ApplicationReadyEvent, вызывается класс обслуживания NetworkSettingsManager.loadDefaultNetworkSettings и заполняет значения, т.е. методы установки определенно вызываются.
Однако для доступа к NetworkSettingsModel в любом другом class, мне нужно получить модель из NetworkSettingsManager. Потому что, если я внесу зависимость NetworkSettingsModel, методы получения NetworkSettingsModel вернут ноль
Если это имеет значение, это приложение javaFX
@Component
public class NetworkSettingsManager {
@Autowired
private NetworkSettingsModel networkSettingsModel;
private String fileName = "actual file location";
/**
* Constructor.
* @param networkSettingsModel the Model containing the network settings
*/
@Autowired
public NetworkSettingsManager(NetworkSettingsModel networkSettingsModel) {
this.networkSettingsModel = networkSettingsModel;
}
/**
* Load the default network settings values from the config file to the model
* @return the NetworkSettingsModel
* */
public NetworkSettingsModel loadDefaultNetworkSettings() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
InputStream inputStream = new FileInputStream(fileName);
try (inputStream) {
networkSettingsModel = objectMapper.readValue(inputStream, new TypeReference() {
});
}
}
public void getNetworkSettingsModel() {
return this.networkSettingsModel
}
Модель/POJO
@Component
public class NetworkSettingsModel {
@JsonProperty("ip_address")
private String ipAddress;
//I think same outcome whether it has a private/public constructor or none at all
/**
* Get the IP address
* @return the ip Address
*/
public String getIPAddress() {
return ipAddress;
}
/**
* Sets the IP Address
* @param the address
*/
protected void setIPAddress(String ipAddress) {
this.address = ipAddress;
}
Если я попытаюсь внедрить его в любой класс, я получу нули. например
public class SomeClass {
@Autowired
NetworkSettingsModel model;
//whether i put this in the constructor makes no difference
public void someMethod() {
model.getIpAddress();
//this value will always be null, even though this method is only being
// called long after NetworkSettingsManager.loadDefaultNetworkSettings()
//has guaranteed been called successfully
//instead have to use NetworkSettingsManager.getNetworkSettingsModel()
// to get a model that actually has values in it
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -pojo-null
Почему мой Spring @Autowired json POJO имеет значение null? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1763650381
Anonymous
У меня есть класс модели данных NetworkSettingsModel, который должен быть одноэлементным компонентом, чтобы к нему можно было получить доступ в любом месте приложения весенней загрузки.
Его значения успешно инициализируются в сервисном классе NetworkSettingsManager. РЕДАКТИРОВАТЬ, если использование ObjectMapper не является «правильным» способом сопоставления значений с моделью, тогда я прошу, пожалуйста, скажите мне, как я могу это сделать.
Когда происходит событие Spring ApplicationReadyEvent, вызывается класс обслуживания NetworkSettingsManager.loadDefaultNetworkSettings и заполняет значения, т.е. методы установки определенно вызываются.
Однако для доступа к NetworkSettingsModel в любом другом class, мне нужно получить модель из NetworkSettingsManager. Потому что, если я внесу зависимость NetworkSettingsModel, методы получения NetworkSettingsModel вернут ноль
Если это имеет значение, это приложение javaFX
@Component
public class NetworkSettingsManager {
@Autowired
private NetworkSettingsModel networkSettingsModel;
private String fileName = "actual file location";
/**
* Constructor.
* @param networkSettingsModel the Model containing the network settings
*/
@Autowired
public NetworkSettingsManager(NetworkSettingsModel networkSettingsModel) {
this.networkSettingsModel = networkSettingsModel;
}
/**
* Load the default network settings values from the config file to the model
* @return the NetworkSettingsModel
* */
public NetworkSettingsModel loadDefaultNetworkSettings() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
InputStream inputStream = new FileInputStream(fileName);
try (inputStream) {
networkSettingsModel = objectMapper.readValue(inputStream, new TypeReference() {
});
}
}
public void getNetworkSettingsModel() {
return this.networkSettingsModel
}
Модель/POJO
@Component
public class NetworkSettingsModel {
@JsonProperty("ip_address")
private String ipAddress;
//I think same outcome whether it has a private/public constructor or none at all
/**
* Get the IP address
* @return the ip Address
*/
public String getIPAddress() {
return ipAddress;
}
/**
* Sets the IP Address
* @param the address
*/
protected void setIPAddress(String ipAddress) {
this.address = ipAddress;
}
Если я попытаюсь внедрить его в любой класс, я получу нули. например
public class SomeClass {
@Autowired
NetworkSettingsModel model;
//whether i put this in the constructor makes no difference
public void someMethod() {
model.getIpAddress();
//this value will always be null, even though this method is only being
// called long after NetworkSettingsManager.loadDefaultNetworkSettings()
//has guaranteed been called successfully
//instead have to use NetworkSettingsManager.getNetworkSettingsModel()
// to get a model that actually has values in it
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79825457/why-is-my-spring-autowired-json-pojo-null[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия