所以我对Spring很新,并使用Spring Initializr创建一个新项目。我没有任何配置.XML或类似的配置文件。我跟着这个tutorial去做事。如何在Spring MVC中动态更新模型的属性?
我的控制器类基本上看起来像下面这样:
@Controller
@Configuration
@EnableScheduling
public class IndexController {
@GetMapping("/")
public String index(Model m) {
m.addAttribute("Title", "New Website");
m.addAttribute("MenuOne", InformationProvider.getMenuOneLink());
m.addAttribute("MenuTwo", InformationProvider.getMenuTwoLink());
m.addAttribute("StaffNumber", InformationProvider.getNumberOfStaff());
m.addAttribute("Birthdays", InformationProvider.getBirthdaysOfToday());
return "dashboard";
}
}
这工作得很好,一切都在做什么它应该是。不幸的是,需要在运行时更新由InformationProvider类获取其数据的属性。 InformationProvider正在接近网络上的不同API,我的想法要么是每10小时从这些API中提取数据,要么在网站刷新时再次提取数据。
从我的理解我的方法是应该被称为每次有人输入URL本地主机:8080 /。我的第一个想法基本上是10小时后刷新网站。该方法在网站刷新时调用,并且每次都返回“仪表板”,但值不会更新。要更新我的属性,我必须重新启动我的应用程序。我正在查看@scheduled注释,但这并没有真正帮助我,因为它仅适用于返回时间为无效并且没有对象参数的方法。因此,调度我的方法索引不起作用,并且可能是错误的方式。
我在Google上搜寻关于这个话题有很多,但我真的无法找到特定问题,你只有一个模型参数,在控制器的方法,并希望以后更新的解决方案。
,这是什么问题最好的方法?我正在检查模型类的JavaDoc,但它不包含remove或update方法。我是否需要直接访问模型后面的HashMap,并用现有密钥覆盖属性以更新它?
编辑:
更具体有关InformationProvider类,它基本上是由返回从Java称为卷曲方法接受一个字符串。而已。
在此先感谢
避免在应用程序中使用静态方法:Spring已经构建了大量的工具,允许您的应用程序根据Spring容器中的依赖关系解析进行工作。 –