ServletContextAware注入ServletContext

olivee 5年前 ⋅ 1183 阅读

1说明

ServletContextAware可以用来注入ServletContext。可以配合ApplicationRunner在服务启动的时候注入ServletContext,并往ServletContext中设置全局的属性。

每个应用都会有一个ServletContext对象与之关联,当容器分布在多个虚拟机上时,web应用在所分布的每个虚拟机上都拥有一个ServletContext实例

传统非spring的代码中,获取ServletContext的方法如下:

ServletContext sc = request.getSession().getServletContext();
//或者使用
//ServletContext sc = this.getServletContext();

2用例

以下代码是在某个bean中注入ServletContext的示例:

import javax.servlet.ServletContext;

import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;

@Component
public class UseOfServletContext implements ServletContextAware {

    private ServletContext servletContext;

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

    public void setContextData(String data) {
        servletContext.setAttribute("data1", data);
    }

}