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

标签 java spring spring-mvc spring-boot

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

@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/

相关文章:

java - 使用 Java 8 按属性对自定义对象列表进行分组

java - Spring Autowiring 问题

Java应用程序不断检查表中添加的新行

java - 如何在 JFreeChart 可见后更新它的外观?

java - 优先级队列插入键值对java

java - 使用正则表达式验证美国电话号码

java - Spring Initializr 基本项目无法构建

java - spring mvc、ajax中客户端发送的请求语法错误

java - 从 Spring MVC 端点流式传输动态图像而不将其保存在内存中

java - 处理超过 100k 条数据记录