1、实现Servlet监听器接口ServletContextListener
- public class InitListener implements ServletContextListener {
- @Override
- public void contextDestroyed(ServletContextEvent context) {
- }
- @Override
- public void contextInitialized(ServletContextEvent context) {
- // 上下文初始化执行
- System.out.println("================>[ServletContextListener]自动加载启动开始.");
- SpringUtil.getInstance().setContext(
- <span style="white-space:pre"> </span>WebApplicationContextUtils.getWebApplicationContext(arg0.getServletContext())
- <span style="white-space:pre"> </span>);
- }
- }
- <listener>
- <listener-class>com.test.init.InitListener</listener-class>
- </listener>
- 2、编写一个Servlet,在web.xml里面配置容器启动后执行即可
- public class InitServlet extends HttpServlet {
- /**
- */
- private static final long serialVersionUID = 1L;
- @Override
- public void init(ServletConfig config) {
- try {
- super.init();
- } catch (ServletException e) {
- e.printStackTrace();
- }
- System.out.println("================>[Servlet]自动加载启动开始.");
- // 读取Spring容器中的Bean[此时Bean已加载,可以使用]
- //执行想要的代码
- System.out.println("================>[Servlet]自动加载启动结束.");
- }
- }
- 然后在web.xml文件配置该Servlet的启动方式为:容器启动后执行
- <servlet>
- <servlet-name>InitServlet</servlet-name>
- <servlet-class>com.test.init.InitServlet</servlet-class>
- <init-param>
- <param-name>username</param-name>
- <param-value>test</param-value>
- </init-param>
- <!-- 此处指定加载顺序为2,表明还有优先级更高的Servlet要先执行 -->
- <load-on-startup>2</load-on-startup>
- </servlet>
- 关于启动后执行,由load-on-startup指定:
- (1)当值为0或者大于0时,表示容器在应用启动时就加载这个servlet。值越小,启动优先级越高;
- (2)当是一个负数时或者没有指定时,表示该servlet被调用时才加载。
- 3、如果你使用Spring IOC作为Bean管理容器,那么可以指定init-method其中init-method表示bean加载成功后,立即执行某个方法。配置如下:start为要执行的方法名称
- <!-- service -->
- <bean id="shopService" class="com.test.teach.service.ShopService" <span style="color:#33ffff;">init-method="start"</span>>
- <property name="shopDao" ref="shopDao" />
- </bean>