Spring IoC容器--入门 二
2013-11-07 18:01
344 查看
一 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容器。
相关文章推荐
- 2、spring入门—Spring IOC容器
- 什么是Spring IOC 容器?
- Spring IoC、DI入门小程序
- 容器vector的入门
- 容器和算法 - C++快速入门47
- Spring IoC容器构建过程分析(二)(草稿,持续整理中)
- GTK入门学习:布局容器之垂直布局
- WPF入门——XAML和布局容器
- 方便获取Spring IOC容器中对象的工具类
- C++ Primer 学习笔记:关联容器入门 set && map
- Spring IOC(二)容器初始化
- 自己实现Spring IoC容器(二)读取配置文件
- Mybatis3源码分析(二):扫描Mapper关联到spring IOC容器
- Spring在非web应用中优雅地关闭Spring IoC容器
- Docker 入门教程二 - 容器 Container
- C++ STL入门教程(1) vector向量容器使用方法
- Docker官方入门指南一(容器)
- Spring IOC之容器实现过程
- Windows 容器快速入门
- Spring IOC 容器源码分析 - 填充属性到 bean 原始对象