web容器启动时候初始化数据以及普通类注入

来源:互联网 发布:汽车数据采集驱动系统 编辑:程序博客网 时间:2024/06/02 04:06

web容器启动时候初始化数据,需要在web.xml中加入自己的配置

1.Listener方式

 

    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <!-- 要在spring的ContextLoaderListener后边 -->    <listener>        <listener-class>cn.xue.init.XueInitListener</listener-class>    </listener>
public class XueInitListener implements ServletContextListener{public void contextInitialized(ServletContextEvent sce) {WebApplicationContext applicationContext =  WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());ReviewActivityManager reviewActivityManager=(ReviewActivityManager)applicationContext.getBean("reviewActivityManager");List<ReviewActivity> list = reviewActivityManager.getAll(ReviewActivity.class);for(ReviewActivity reviewActivity:list){ReviewActivity ra=new ReviewActivity();ra.setName("999"+reviewActivity.getName());try {reviewActivityManager.saveOrUpdate(ra);} catch (CommonException e) {e.printStackTrace();}System.out.println(reviewActivity.getName());}}public void contextDestroyed(ServletContextEvent sce) {}}


2.servlet方式,同时普通类作为bean注入

    <servlet>    <servlet-name>initial</servlet-name>    <servlet-class>cn.xue.init.InitialServlet</servlet-class>    <!-- 值最好大些,因为spring的ContextLoaderListener初始化完 -->    <load-on-startup>10</load-on-startup>  </servlet> <servlet-mapping>    <servlet-name>initial</servlet-name>    <url-pattern>/InitialServlet</url-pattern> </servlet-mapping>


application.xml

<bean id="schedulerManager" class="cn.xue.init.SchedulerManager"/>


 

//Spring启动完成后执行初始化操作(@Component符号组件可以用在任何层)@Component("initial")public class InitialServlet extends HttpServlet {private static final long serialVersionUID = 1L;public InitialServlet() {super();}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {}@Overridepublic void init(ServletConfig config) throws ServletException {try {WebApplicationContext applicationContext =  WebApplicationContextUtils.getWebApplicationContext(config.getServletContext());ReviewActivityManager reviewActivityManager=(ReviewActivityManager)applicationContext.getBean("reviewActivityManager");List<ReviewActivity> list = reviewActivityManager.getAll(ReviewActivity.class);for(ReviewActivity reviewActivity:list){ReviewActivity ra=new ReviewActivity();ra.setName("888"+reviewActivity.getName());reviewActivityManager.saveOrUpdate(ra);System.out.println(reviewActivity.getName());}SchedulerManager schedulerManager=(SchedulerManager)applicationContext.getBean("schedulerManager");schedulerManager.add();} catch (CommonException e) {e.printStackTrace();}}}


 

//(@Component符号组件可以用在任何层)@Component("schedulerManager")public class SchedulerManager {private ReviewActivityManager reviewActivityManager;//注入必须要有@Autowired@Autowiredpublic void setReviewActivityManager(ReviewActivityManager reviewActivityManager) {this.reviewActivityManager = reviewActivityManager;}public void add() throws CommonException{List<ReviewActivity> list = reviewActivityManager.getAll(ReviewActivity.class);for(ReviewActivity reviewActivity:list){ReviewActivity ra=new ReviewActivity();ra.setName("777"+reviewActivity.getName());reviewActivityManager.saveOrUpdate(ra);System.out.println(reviewActivity.getName());}}}