Spring MVC中使用的应用范围级别属性,而不是会话范围级别属性(Spring MVC use

2019-10-19 15:28发布

在Spring MVC中,我们可以使用

@SessionAttributes("variable")

model.addAttribute("variable", new Object());

这样,这个变量一旦设置为availabel到用户会话。

现在,我希望此变量在应用范围被设定为,当user 1套这个属性也将提供给我的所有用户user 2user 3user 4等。

这个变量将我的jsp页面上使用。 请建议。

Answer 1:

如果你的意思是Web应用程序的范围,那么你需要在设置它ServletContext属性。 因为这不是从用户的角度在web应用程序做一个平常的事,春不提供快捷方式。 相反,刚刚取回ServletContext通过将其注入你要么@Controller或提供它作为参数传递给一个处理方法和添加属性

ServletContext ctx = ...;
ctx.setAttribute("name", new Object());

请注意,有一个ServletContext每个Web应用程序。 该ServletContext并不能保证任何原子,即。 它是不同步的。 你需要自己做同步,如果应用需要。



Answer 2:

您可以定义一个简单的POJO如春Bean服务做。

@Service
public class MyVariable{

    private Object myVar;

    public Object getMyVar() {
        return myVar;
    }

    public void setMyVar(Object myVar) {
        this.myVar = myVar;
    }

}

然后,你可以在你@Controller @Autowired这项服务,并得到它的任何东西。



文章来源: Spring MVC use application scope level attribute instead of session scope level attribute