- 加载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对象只能有一个 。
容器类层次结构
下面我们给出容器的层次图
文章插图
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
文章插图
依赖注入相关
文章插图
注解开发
在上述的开发中 , 我们采用xml配置文件的形式来说依旧显得有些复杂
这时我们就需要发挥Spring的优点:简化开发 , 通过注解来简化开发过程
下面我们会通过多个方面将Bean逐步转化为注解
推荐阅读
- 柠檬水什么时候喝最好 柠檬水什么时候喝好
- 我想念你(我想念你的句子)
- 黄子韬|黄子韬徐艺洋见家长疑同居,还不承认恋情,再怎么嘴硬都无济于事
- 完美日记|这届双11,完美日记为啥“隐身”了?
- 玄奘有什么身世 ? 玄奘的身世
- 手机导航究竟哪个更好用 手机导航哪个好用
- 指甲白色月牙变少,指甲的月牙白越来越多-
- 戴尔台式机评测 戴尔台式机
- 绿松石|绿松石与藏族金轮
- |艺术家徐耀——淡雅脱俗 赏心悦目