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?
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");
...
}
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With