在项目里要用到一个全局变量,
大概需求是要发送socket 数据包 内容里有个序列号
发送一次加一
开始思路就是定义一个全局变量或者 存到context 域里
我选择了后者
然后代码
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.web.context.WebApplicationContext;
import javax.servlet.ServletContext;
@Component
public class SettingDataInitListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
// 将 ApplicationContext 转化为 WebApplicationContext
WebApplicationContext webApplicationContext =
(WebApplicationContext)contextRefreshedEvent.getApplicationContext();
// 从 webApplicationContext 中获取 servletContext
ServletContext servletContext = webApplicationContext.getServletContext();
// servletContext设置值
String seria0 = "0000";//序列号
servletContext.setAttribute("queryPayFlagSerial", seria0);
servletContext.setAttribute("queryStuSerial", seria0);
servletContext.setAttribute("paySerial", seria0);
}
}
开始想不写这个类,直接在过滤器里设置呢,然后不行,报空指针,百度说
过滤器执行的时候spring 容器还没加载 所有用不了。。云云。。
咱也不太懂,照做就是了。。。