gpt4 book ai didi

java - Bean单例、 session 创建和初始化

转载 作者:行者123 更新时间:2023-12-02 11:04:08 26 4
gpt4 key购买 nike

我不知道这是否是实现我的解决方案的更好方法:

@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 的内容,并将内容映射到对象 GetFromJson 中(我只需在数据库中进行一次查询)。因此,我需要在我的所有应用程序中使用该对象,因此我认为我需要使用单例

有人向我发布了一个库以从数据库获取 JSON。 JSON 对象解析为 Map<String, Map<String, ArrayList<String>>>因此我创建了我的 GetFromJson类。

现在我有很多rest服务,在我的rest服务中我需要使用我的对象:GetFromJson来获取jsonMap的内容。

我有很多问题。

带有注释@Scope("singleton")我保证有GetFromJson我的所有应用程序中只有一个实例可用?

或者在 Spring 中在我的应用程序中提供单例和 session 对象的更好方法是什么?

要访问获取GetFromJson的jsonMap内容就足够了

@Autowired
private GetFromJson jsonObject;

或者我怎样才能获得我的单例类?

在我的休息方法服务中使用:

 jsonObject.getJsonMap();

如何初始化我的单例,因为我正在尝试用以下方法初始化我的对象:

@Autowired
private GetFromJson jsonObject;


public methodToInitialize(){
jsonObject = methodLibraryFromDatabase(GetFromJson.class);
}

IDE 告诉我未使用字段初始化

我需要相同的逻辑,但是对于 session 对象,我认为如果我理解 session 对象的单例实现将是相同的,但仅将注释更改为:@Scope("session")

最佳答案

我认为 OP 想要在应用程序生命周期中初始化一次基于数据库的 POJO,并在需要时 Autowiring 它。

通常这是通过创建一个 bean(除非另有说明,否则都是单例)并在需要时 Autowiring 它来完成的。

此示例应该可以帮助您入门。

@Configuration // beans are declerated in @Configuration classes
public class GetJsonInitializer {

@Bean // singleton by default
public GetFromJson jsonMap(){
GetFromJson jsonObject = methodLibraryDatabase(GetFromJson.class);
return jsonOBject;
}
}

现在在任何 Spring 服务/组件等中 Autowiring GetFromJson

@Service
public class SomeService {
@Autowired
private GetFromJson jsonMap;
}

希望这有帮助!

关于java - Bean单例、 session 创建和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51106011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com