java - 在不同的 java 类中使用已经初始化的类,
问题描述
我是 Java 新手,我正在构建一个 springboot 应用程序,其中不同的类需要来自同一源的数据。源是几个文件,但重要的是需要相当长的时间才能获取数据;取出所有数据的速度与取出不同类所需的每一块数据一样快,因此对函数进行分区无济于事。
因此,我想要一个初始化一次的类,获取所有数据,然后为需要数据的类提供服务。理想情况下,它仅在请求时才被初始化,然后数据将保存在实例中。
假设我有课:
package myapp;
import java.util.concurrent.TimeUnit;
import java.lang.InterruptedException;
public class ExampleClass {
private int usefulValue;
public ExampleClass(){
this.usefulValue = slowMethod();
}
private int slowMethod(){ //just an example of something that takes time
int usefulValue;
try {
TimeUnit.SECONDS.sleep(500);
} catch (InterruptedException e){
;
}
usefulValue = 15;
return usefulValue;
}
public int getUsefulValue(){
return this.usefulValue;
}
}
我怎样才能让它运行并usefulValue
可供包中的其他类使用,而无需在每个单独的类中重新加载它?
这些值在内存方面非常易于管理,我正在专门寻找内存解决方案;我可以将其写入文件/数据库或运行一个为应用程序提供服务的套接字服务器,但问题与在 Java 中可以做什么有关。
附言。usefulValue
大约每天变化一次
解决方案
package myapp;
import java.util.concurrent.TimeUnit;
import java.lang.InterruptedException;
public class ExampleClass {
public static int usefulValue;
public ExampleClass(){
ExampleClass.usefulValue = slowMethod();
}
private int slowMethod(){ //just an example of something that takes time
int usefulValue;
try {
TimeUnit.SECONDS.sleep(500);
} catch (InterruptedException e){
;
}
usefulValue = 15;
return usefulValue;
}
public int getUsefulValue(){
return ExampleClass.usefulValue;
}
}
同样在任何其他类中,您可以像这样使用它的值,ExampleClass.usefulValue
因此它的值在整个应用程序或这个线程中保持不变。
推荐阅读
- python - 合并两个数据框并减少列数
- selenium - 处理评分小部件
- angularjs - Chrome 80 聚合物类型错误:无法读取 null 的属性“__proto__”
- c# - C# 中的 Azure Functions 模型绑定问题
- xcode - 有没有办法找到 UI 测试用例的覆盖率?
- flutter - Flutter 自定义底片
- azure - 处理超时的属性是什么
- javascript - 使用页面源的 Google Chrome 扩展程序
- java - Android studio 使用 downloadmanager 下载,然后打开下载的文件
- typo3-9.x - 如何为用户启用后端布局选择