<!-- 占坑,迟点补充底层原理 -->
Spring支持4种资源的地址前缀
(1)从类路径中加载资源——classpath:
classpath:和classpath:/是等价的,都是相对于类的根路径。还有一种classpath*:前缀,假设有多个jar包或文件系统类路径都拥有一个相同的文件名比如ApplicationContext.xml,classpath:只会在第一个加载ApplicationContext.xml,而classpath*:会到扫描到所有的ApplicationContext.xml。
(2)从文件系统目录中装载资源——file:
使用UrlResource从文件系统目录中装载资源,可采用绝对或相对路径。
(3)从Web服务器中装载资源——http://
使用UrlResource从Web服务器中装载资源。
(4)从ftp服务器中装载资源——ftp://
使用UrlResource从ftp服务器中装载资源。
BeanFactory和ApplicationContext
BeanFactory
Bean工厂(com.springframework.beans.factory.BeanFactory)是spring框架最核心的接口,它提供了高级IOC的配置机制。BeanFactory使管理不同类型的Java对象成为可能。应用上下文(com.springframework.context.ApplicationContext)建立在BeanFactory基础之上,提供了更多面向应用的功能,更易于创建实际应用。我们一般称BeanFactory为IOC容器,而称ApplicationContext为上下文。但为了行文方便,我们也将ApplicationContext称为Spring容器。BeanFactory是Spring的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合我们都直接使用ApplicationContext而非底层的BeanFactory。
注意:在初始化BeanFactory时,必须为其提供一种日志框架,这样启动Spring容器才不会报错。
<!--补充继承图-->
ApplicationContext
ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件。
<!--补充继承图-->
如果配置文件放在类路径下,可以优先使用ClassPathXmlApplicationContext实现类:
ApplicationContext ctx = new ClassPathXmlApplicationContext("com/bigbean/beans.xml");
对于ClassPathXmlApplicationContext来说,"com/bigbean/beans.xml"等同于"classpath:com/bigbean/beans.xml"。
如果配置文件放在文件系统的路径下,则可以优先考虑使用FileSystemXmlApplicationContext实现类:
ApplicationContext ctx = new FileSystemXmlApplicationContext("com/bigbean/beans.xml");
对于FileSystemXmlApplicationContext来说,"com/bigbean/beans.xml"等同于"file:com/bigbean/beans.xml"。
还可以指定一组配置文件,spring会自动将多个配置文件在内存中“整合”成一个配置文件。