Spring IoC容器--入门 二

一 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容器。





   

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值