Spring容器最基本的接口是BeanFactory,ApplicationContext是BeanFactory的子接口。而我们一般使用ApplicationContext作为Spring容器,主要有ApplicationContext有其他功能:
1. ApplicationContext继承了MessageSource接口,因此具备了国际化的功能。
2. 资源访问,如URL和文件
3. 事件机制
4. 载入多个配置
5. 以声明的方式启动,并创建Spring容器。
6. 当声明对象后,会实例化所有的singletion,虽然刚开始毕竟费时,可以在最开始就检验是否会有配置错误。
Application事件机制需要三个要素,一个是事件,一个事件源,还有一个是监听。
事件需要继承ApplicationEvent类,而监听需要实现ApplicationListener接口。
监听如下
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
public class MailNofitier implements ApplicationListener
{
@Override
public void onApplicationEvent(ApplicationEvent arg0)
{
// TODO Auto-generated method stub
if(arg0 instanceof EmailEvent)
{
EmailEvent event = (EmailEvent) arg0;
System.out.println(event.getCode()+" "+event.getName());
}
else
{
System.out.println(arg0.getClass());
}
}
}
时间如下
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
public class MailNofitier implements ApplicationListener
{
@Override
public void onApplicationEvent(ApplicationEvent arg0)
{
// TODO Auto-generated method stub
if(arg0 instanceof EmailEvent)
{
EmailEvent event = (EmailEvent) arg0;
System.out.println(event.getCode()+" "+event.getName());
}
else
{
System.out.println(arg0.getClass());
}
}
}
还需要在xml中配置监听
在有些情况,bean需要获得Spring容器的引用,那么就需要bean类实现ApplicationContextAware接口。然后在Ioc中会自动装备,不需要我们手动传入。