public class LoadServlet extends HttpServlet implements InitializingBean {
private List<LoaderAware> loaders = Collections.emptyList();
@Override
public void afterPropertiesSet() throws Exception {
this.loaders = SpringContext.getBeanListOfType(LoaderAware.class);
}
@Override
public void init() throws ServletException {
try {
if (CollectionUtils.isNotEmpty(this.loaders)) {
for (LoaderAware loader : this.loaders) {
loader.init();
}
}
} catch (Exception e) {
throw new ServletException(e);
}
}
。。。。。。。。。。
}
spring-base.xml里面配置
<bean id="loadServlet" class="com.dxy.user.servlet.LoadServlet"/>
web.xml里面配置
<context-param>
<description>默认加载spring配置</description>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:com/dxy/user/config/spring-base.xml
</param-value>
</context-param>
<servlet>
<servlet-name>loadServlet</servlet-name>
<servlet-class>com.dxy.user.servlet.LoadServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:com/dxy/user/config/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
loadServlet的注册一定要放在spring-base.xml里面(名称不一定非要是这个)。因为我之前是将其配置在spring-mvc.xml里面。导致loadServlet里面的init方法先执行 afterPropertiesSet()后执行了。另一定要在web.xml里面配置<servlet-name>loadServlet</servlet-name>这一栏的配置,不然init方法不执行。当然就算配置了,init方法也不一定执行(<load-on-startup>0</load-on-startup>值>=0的情况下init执行)。