当在java工程下运行时
一、InitApplicationListener,通过@Component注入到Spring容器,实现ApplicationListener(完成spring中的事件)接口,和ServletContextAware(得到application对象),把初始化的信息方法application中
注意:application只有在web容器运行时才有值
<span style="font-size:18px;">package com.seven.listener;
import javax.servlet.ServletContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
/**
* 用于做初始化工作的spring的事件监听器
* @author Administrator
*
*/
@Component
//注意:对于 ServletContextAware,只有在Web容器中运行时才有值。
public class InitApplicationListener implements ApplicationListener,ServletContextAware{
private ServletContext application;
public void onApplicationEvent(ApplicationEvent event) {
System.out.println("触发了"+event.getClass());
//判断是否属于初始化刷新的事件,如果是,就做初始化工作,其他事件不做初始化
if(event instanceof ContextRefreshedEvent){
System.out.println("做初始化工作--》》");
System.out.println("放到application中"+application);
}
}
public void setServletContext(ServletContext application) {
this.application = application;
}
}
</span>
二测试类
<span style="font-size:18px;">package com.seven.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.seven.action.TestAction;
import com.seven.service.UserService;
public class UserServiceTest {
@Test
public void testApplicationContext(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
ac.refresh();
ac.close();
}
}</span>