Я не знаю, является ли это лучшим способом для реализации моего решения:
@Component
@Scope("singleton")
public class GetFromJson implements Serializable{
/**
*
*/
private static final long serialVersionUID = -8203722696439228358L;
Map<String, Map<String, ArrayList<String>>> jsonMap;
public Map<String, Map<String, ArrayList<String>>> getJsonMap() {
return jsonMap;
}
public void setJsonMap(Map<String, Map<String, ArrayList<String>>> jsonMap) {
this.jsonMap= jsonMap;
}
}
Класс является Сериализуемым, потому что я получаю контент из Json из базы данных и сопоставляю контент в Object GetFromJson (мне нужно выполнить запрос в базе данных только один раз). По этой причине мне нужно использовать объект во всех моих приложениях, поэтому я думаю, что мне нужно использовать Singleton
Кто-то опубликовал мне библиотеку, чтобы получить JSON из базы данных. объект JSON анализирует Map<String, Map<String, ArrayList<String>>>
, поэтому я создаю свой класс GetFromJson
.
Теперь у меня много Служб отдыха, в моих службах отдыха мне нужно использовать мой объект: GetFromJson, чтобы получить содержимое jsonMap.
У меня много вопросов.
С аннотацией @Scope("singleton")
Я гарантирую, что GetFromJson
будет доступен только один экземпляр во всех моих приложениях?
Или как лучше иметь в Spring одноэлементный и сессионный объект, доступный в моем приложении?
Для доступа к содержимому jsonMap из GetFromJson достаточно использовать
@Autowired
private GetFromJson jsonObject;
Или как я могу получить мой синглтон-класс?
и в моем методе отдыха службы использовать:
jsonObject.getJsonMap();
Как инициализировать мой синглтон, потому что я пытаюсь инициализировать мой объект с помощью:
@Autowired
private GetFromJson jsonObject;
public methodToInitialize(){
jsonObject = methodLibraryFromDatabase(GetFromJson.class);
}
И IDE скажите мне, что инициализация поля не используется
Мне нужна та же логика, но с сеансом Object, я думаю, что если я пойму, что синглтон-реализация с моим объектом сеанса будет такой же, но только с изменением аннотации на: @Scope("session")