在Spring MVC中我们可以使用
@SessionAttributes("variable")
和
model.addAttribute("variable", new Object());
这样一旦设置此变量就可用于用户会话。
现在我希望在应用程序范围内设置此变量,以便user 1
设置此属性时,我的所有用户user 2
,user 3
,user 4
都可以使用此属性等
这个变量将在我的jsp页面上使用。 请建议。
答案 0 :(得分:3)
您可以将一个简单的Pojo定义为Spring Bean Service。
@Service
public class MyVariable{
private Object myVar;
public Object getMyVar() {
return myVar;
}
public void setMyVar(Object myVar) {
this.myVar = myVar;
}
}
然后,你可以在你的@Controller中@Autowired这个服务并获得它。
答案 1 :(得分:3)
如果您的意思是Web应用程序范围,则需要在ServletContext
属性中进行设置。因为从用户的角度来看,这在Web应用程序中并不常见,所以Spring并没有提供快捷方式。相反,只需通过将ServletContext
注入@Controller
或将其作为参数提供给处理程序方法并添加属性
ServletContext ctx = ...;
ctx.setAttribute("name", new Object());
。
ServletContext
请注意,每个Web应用程序只有一个ServletContext
。 {{1}}不保证任何原子性,即。它没有同步。如果应用程序需要,您需要自己进行同步。