java - JBoss 上的 Java 缓存
问题描述
我有一个在JBOSS上运行的 Java 应用程序。此应用程序从多个API获取数据并将其显示在网页上。
我想缓存数据,因此每次有人打开我的网页时都不需要调用 API。
我想缓存 5 个列表或字符串 5 分钟。没有数据库有什么办法吗?
解决方案
您可以使用 http 会话来持久化信息
例子
HttpSession misession= request.getSession(true);
Producto miproducto= new Producto(1,"telefono",300);
misession.setAttribute("producto",miproducto);
关联
文档
如果您使用的是 springboot
您可以使用带有应用程序注释的单例
@Configuration
public class AppConfig {
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public PrototypeBean prototypeBean() {
return new PrototypeBean();
}
@Bean
public SingletonBean singletonBean() {
return new SingletonBean();
}
}
public class SingletonBean {
// ..
@Autowired
private PrototypeBean prototypeBean;
public SingletonBean() {
logger.info("Singleton instance created");
}
public PrototypeBean getPrototypeBean() {
logger.info(String.valueOf(LocalTime.now()));
return prototypeBean;
}
}
public static void main(String[] args) throws InterruptedException {
AnnotationConfigApplicationContext context
= new AnnotationConfigApplicationContext(AppConfig.class);
SingletonBean firstSingleton = context.getBean(SingletonBean.class);
PrototypeBean firstPrototype = firstSingleton.getPrototypeBean();
// get singleton bean instance one more time
SingletonBean secondSingleton = context.getBean(SingletonBean.class);
PrototypeBean secondPrototype = secondSingleton.getPrototypeBean();
isTrue(firstPrototype.equals(secondPrototype), "The same instance should be returned");
}
如果您使用的是底漆面,您可以使用 @ApplicationScoped
@ApplicationScoped
应用程序范围的托管 bean 实例与 Web 应用程序本身的生命周期相关联。在整个 Web 应用程序中只有一个应用程序范围的托管 bean 实例。它与 Singleton EJB 不同但相似。
推荐阅读
- java - 如何将 GraphQL 嵌入现有的 REST 后端
- python - 如何只显示最后六个单词
- javascript - 为什么即使在设置“esponse.addHeader("Access-Control-Allow-Origin", "*");" 之后 CORS 请求也会失败 在小服务程序中?
- regex - 正则表达式必须包含子字符串
- java - 无法编辑其他 Parse User 对象,在后台保存不会写入 Parse Dashboard
- qt - 使用 Qt 创建器在 MainWindow.ui 上使用多个表单
- python - python 以什么顺序评估这个条件表达式?
- json - Go Lang 中的 JSON 结构到 csv
- c++ - 使用包中工作区导入的线性代数库Eigen
- php - 如何在foreach循环之外访问php变量