public class InitBloggerData implements ServletContextListener, ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
InitBloggerData.applicationContext = applicationContext;
}
public void contextInitialized(ServletContextEvent sce) {
//先获取servlet上下文
ServletContext application = sce.getServletContext();
//同上,获取博客类别信息service
BlogTypeService blogTypeService = applicationContext.getBean(BlogTypeService.class);
你的这个类,有被IOC加载?
你可以自定义一个ContextListener
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ContextListener implements ServletContextListener{
private static final Logger LOGGER = LoggerFactory.getLogger(ContextListener.class);
@Override
public void contextInitialized(ServletContextEvent sce) {
LOGGER.info("application context init = {}", sce.getServletContext());
}
}
然后通过ServletListenerRegistrationBean
加载
@Bean
public ServletListenerRegistrationBean<ContextListener> servletListenerRegistrationBean(){
ServletListenerRegistrationBean<ContextListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean<>(new ContextListener());
return servletListenerRegistrationBean;
}