Spring IoC容器--入门 二

来源:互联网 发布:中银淘宝校园卡欠费 编辑:程序博客网 时间:2024/05/21 13:59

一 ApplicationContext简介

    ApplicationContext除了包含BeanFactory的所有功能外,还提供了更完善的框架功能,比如国际化支持,资源访问和事件传递等

    ApplicationContext继承于ListableBeanFactory,HierarchicalBeanFactory,MessageSource,

ApplicationEventPublisher,ResourcePatternResolver。其中ListableBeanFactory和HierarchicalBeanFactory前面已经介绍过,我们现在着重看后面三个与ApplicationContext本身。

二 MessageSource

   Spring利用MessageSource接口实现国际化。

   MessageSource接口的主要包括了三个取得消息的方法,细化了取消息操作的不同需求。一种默认消息,不报一场;一种没有默认 消息,要抛出异常;还有一种用MessageSourceResolvable封装需要传递的参数,封装的参数包括默认的消息,为了防止无效的默认消息,还是提供了异常。

   String getMessage(String code, Object[] args, String defaultMessage, Locale locale);
   假如我们现在定义了一个资源文件,其中一项配置为

   msg.argument.required={0}\u\u4E\u5FC5\u586B\u9879\!         #{0}是个必填项!

   其中code就对应于“msg.argument.required”,而args则对应于{0},defalutMessage表示默认消息,如果取得消息失败,则采用默认消息

   String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException;
   String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException;

三 ApplicationEventPublisher

   Spring利用ApplicationEventPublisher接口实现事件传播。

   ApplicationEventPublisher接口只定义了一个方法:

   void publishEvent(ApplicationEvent event);
   通过这个方法,可以将event通知到系统内所有的ApplicationListener

四 ResourcePatternResolver

   Spring通过ResourceLoader加载资源路径,而ResourcePatternResolver继承于ResourceLoader。

   使用ResourcePatternResolver加载资源默认是在classpath路径下寻找

   String CLASSPATH_ALL_URL_PREFIX = "classpath*:";

   根据正则表达式匹配资源

   Resource[] getResources(String locationPattern) throws IOException;

五 ApplicationContext

   1 ApplicationContext包括的主要方法有:
     查找这个ApplicationContext的唯一Id
     String getId();
     返回Application上下文的名字
     String getDisplayName();
     返回Application上下文第一次加载的时间
     long getStartupDate();
     返回Application上下文的父类上下文,如果没有父类并且是上下文分层中的根,返回null
     ApplicationContext getParent();
     暴露Application上下文中AutowireCapableBeanFactory中的功能
     AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
  2 加载spring配置文件的方法

    1)如果配置文件放在类路径下,则优先使用ClassPathXmlApplicationContext实现类,如下所示:

       ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:beans.xml");
    2)如果配置文件放在文件系统的路径下,则优先使用FileSystemXmlApplicationContext实现类,如下所示:

       ApplicationContext ctx1=new FileSystemXmlApplicationContext("com/swust/context/beans.xml");

    3)Spring 3中支持基于类注解的配置方式,一个标注了@Configuration注解的POJO就可提供Spring需要的Bean配置信息,所以Spring提供了专门的ApplicationContext实现类:AnnotationConfigApplicationContext,如下所示:

      ApplicationContext ctx=new AnnotationConfigApplicationContext(Beans.class);

      Beans.class表示一个用@Configuration注解的类

    4)WebApplicationContext是专门为web应用准备的,它允许从相对于web根目录的路径中装配配置文件。但是它与BeanFactory和ApplicationContext的区别在于:他需要先启动web容器。使用XmlWebApplicationContext实现类启动spring容器。





   

     

原创粉丝点击