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 {
}
@Override
public 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
@Autowired
public 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());
}
}
}