当前位置: 首页 > 知识库问答 >
问题:

Bean单例、会话创建和初始化

梁丘钊
2023-03-14

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

@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 > ,因此我创建了我的GetFromJSON类。

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

或者,在Spring中有一个应用程序中可用的单例和会话对象的更好方法是什么?

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

@Autowired
private GetFromJson jsonObject;

或者我如何获得我的单身班?

在我的rest方法服务使用中:

 jsonObject.getJsonMap();
@Autowired
private GetFromJson jsonObject;


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

共有1个答案

萧奇
2023-03-14

我认为OP希望在应用程序生命周期中初始化一次基于数据库的POJO,并在需要的地方自动调整它。

通常,这是通过创建一个bean(除非另有指定,否则都是单例)并在需要的地方自动调用它来完成的。

这个示例应该能让您开始学习。

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

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

希望这能有所帮助!

 类似资料:
  • > 在EJB3.0及其之前的版本中,该问题是如何处理的? 如果它保留了客户端特定的会话状态,那么单个实例将拥有所有客户端(试图并发访问)的特定数据?它会安全吗?? 如果我们可以在其他会话bean中使用静态最终变量和静态初始值设定项块或静态方法来初始化它们(因为静态变量也是每个类的数据,而不是每个实例的数据),以便跨bean共享公共数据,那么单例会话bean需要什么呢? 在singleton中使用业

  • 如果使用EJB3单例会话Bean,那么让ConcurrentHashMap状态变量-correct没有意义?我可以只使用一个由容器并发管理器管理的常规HashMap?

  • 我有一个以下类别的StorageProxy。java(接口)StorageProxyImpl1。java(StorageProxy接口的实现1) 我在Application类中有一个main方法,用于初始化和使用Resource1和Resource2。 我想为StorageProxy提供依赖注入的指导,这样在创建新的实现时就不会有太大的麻烦。我希望Resource1和Resource2使用相同的S

  • 当使用Spring Framework时,我怀疑在下面提到的场景中会创建多少实例: bean配置如下 默认情况下,bean“a”具有。因此,有一个单例bean引用了一个具有会话范围或原型范围的bean。 在这种情况下,如果有2个对应用程序的同时请求,那么将创建多少个A实例和多少个B实例? 如果有人能解释这是如何工作的,那将是非常有帮助的。 谢了达薇亚

  • 我正在尝试将我的webapp与enunciate解耦,我有一个web.xml,如下所示,但当Spring3启动时,我得到了: 自动连线依赖项的注入失败;嵌套异常为Org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接方法:....当前线程的作用域“session”不是活动的;如果您打算从单例引用这个bean,请考虑为它定义一个有