How to add an object to application scope in Sprin

2019-03-27 04:36发布

We can set the request attributes using Model or ModelAndView object in Spring.

We can use @SessionAttributes to keep attributes in session scope.

Then how can I put an attribute in application scope in Spring, does spring has provided any annotation for that?

3条回答
趁早两清
2楼-- · 2019-03-27 05:05

When you mention about storing your model at application scope then I would conclude you wish to store it at the ServletContext level. For doing that you need to make your controller implements ServletContextAware interface.

import org.springframework.web.context.ServletContextAware;

// ...

public class MyController implements ServletContextAware {

private ServletContext context; 
    public void setServletContext(ServletContext servletContext) { 
    this.context = servletContext;
     }

After getting access to ServletContext you can add it as a attribute

servletContext.setAttribute("modelKey", modelObject);

Kindly let me know if this is what you are looking for.

查看更多
闹够了就滚
3楼-- · 2019-03-27 05:17

In the spring you can get application scope by using @Autowired annotation

@Autowired
private ServletContext servletContext;

Then you can access you element by using .getAttribute Method

Object someObj = servletContext.getAttribute("object",someObj);
if(someObj==null)
someObj = new Object();  //This will create new Object if it doesn't exists.
servletContext.setAttribute("object",someObj);
查看更多
看我几分像从前
4楼-- · 2019-03-27 05:19

Basically all that is needed to configure an application scope is to use the ServletContext, and you can do it in Spring as follows:

public class MyBean implements ServletContextAware {

    private ServletContext servletContext;

    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }

}

javax.servlet.ServletContext could be even injected to your bean implementation as follows:

@Component
public class MyBean {

    @Autowired
    private ServletContext servletContext;

    public void myMethod1() {
        servletContext.setAttribute("attr_key","attr_value");
    }

    public void myMethod2() {
        Object value = servletContext.getAttribute("attr_key");
        ...
    }

}
查看更多
登录 后发表回答