一篇文章带你掌握主流基础框架——Spring( 六 )

  • 加载properties文件标准格式
  • 从类路径或jar包中搜索并加载properties文件
核心容器 
前面已经完成bean与依赖注入的相关知识学习 , 接下来我们主要学习的是IOC容器中的核心容器 。
这里所说的核心容器 , 大家可以把它简单的理解为ApplicationContext , 接下来我们从以下几个问题入手来学习下容器的相关知识:
 
  • 如何创建容器?
  • 创建好容器后 , 如何从容器中获取bean对象?
  • 容器类的层次结构是什么?
  • BeanFactory是什么?
容器的创建方式 
案例中创建ApplicationContext的方式为(类路径下的XML配置文件):
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
除了上面这种方式 , Spring还提供了另外一种创建方式为(文件的绝对路径):
ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\workspace\spring\spring_10_container\src\main\resources\applicationContext.xml");Bean的三种获取方式
方式一 , 就是目前案例中获取的方式:
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
这种方式存在的问题是每次获取的时候都需要进行类型转换
方式二:
BookDao bookDao = ctx.getBean("bookDao" , BookDao.class);
这种方式可以解决类型强转问题 , 但是参数又多加了一个 , 相对来说没有简化多少 。
方式三:
BookDao bookDao = ctx.getBean(BookDao.class);
这种方式就类似我们之前所学习依赖注入中的按类型注入 。必须要确保IOC容器中该类型对应的bean对象只能有一个 。
容器类层次结构
下面我们给出容器的层次图
一篇文章带你掌握主流基础框架——Spring

文章插图
 
BeanFactory的使用
使用BeanFactory来创建IOC容器的具体实现方式为:
public class AppForBeanFactory { public static void main(String[] args) { Resource resources = new ClassPathResource("applicationContext.xml"); BeanFactory bf = new XmlBeanFactory(resources); BookDao bookDao = bf.getBean(BookDao.class); bookDao.save(); } }
为了更好的看出BeanFactory和ApplicationContext之间的区别 , 在BookDaoImpl添加如下构造函数:
public class BookDaoImpl implements BookDao { public BookDaoImpl() { System.out.println("constructor"); } public void save() { System.out.println("book dao save ..." ); } }
如果不去获取bean对象 , 打印会发现:
 
  • BeanFactory是延迟加载 , 只有在获取bean对象的时候才会去创建
  • ApplicationContext是立即加载 , 容器加载的时候就会创建bean对象
  • ApplicationContext要想成为延迟加载 , 只需要按照如下方式进行配置
  •  
核心概念总结 
接下来我们对前面知识的一个总结 , 共包含如下内容:
容器相关
  • BeanFactory是IoC容器的顶层接口 , 初始化BeanFactory对象时 , 加载的bean延迟加载
  • ApplicationContext接口是Spring容器的核心接口 , 初始化时bean立即加载
  • ApplicationContext接口提供基础的bean操作相关方法 , 通过其他接口扩展其功能
  • ApplicationContext接口常用初始化类ClassPathXmlApplicationContext(常用)FileSystemXmlApplicationContext
bean相关 
一篇文章带你掌握主流基础框架——Spring

文章插图
 
依赖注入相关
一篇文章带你掌握主流基础框架——Spring

文章插图
 
注解开发
在上述的开发中 , 我们采用xml配置文件的形式来说依旧显得有些复杂
这时我们就需要发挥Spring的优点:简化开发 , 通过注解来简化开发过程
下面我们会通过多个方面将Bean逐步转化为注解


推荐阅读