We can set the request attributes using Model
or ModelAndView
object in Spring.
We can use @SessionAttributes
to keep attributes
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.
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");
...
}
}
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);