How to add an object to application scope in Spring

后端 未结 3 1556
长情又很酷
长情又很酷 2021-02-14 10:06

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

We can use @SessionAttributes to keep attributes

相关标签:
3条回答
  • 2021-02-14 10:31

    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.

    0 讨论(0)
  • 2021-02-14 10:38

    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");
            ...
        }
    
    }
    
    0 讨论(0)
  • 2021-02-14 10:43

    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);
    
    0 讨论(0)
提交回复
热议问题