SSM框架-获取容器的方式
创始人
2024-03-24 15:19:30
0

9 容器

9.1 获取容器

  1. 记载类路径下的容器所在的配置文件,也就是之前用的
public class App2 {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");BookDao bookDao = (BookDao) ctx.getBean("bookDao");bookDao.save();}
}
  1. 使用文件的绝对位置,少用
        //2. 使用文件的绝对位置,哪个盘符下进行加载ApplicationContext ctx2 = new FileSystemXmlApplicationContext("C:\\Users\\CZyue\\Desktop\\javaSE\\10-ssm\\spring_10_container\\spring_10_container\\src\\main\\resources\\applicationContext.xml");BookDao bookDao = (BookDao) ctx2.getBean("bookDao");bookDao.save();
  1. 总结

在这里插入图片描述

9.2 获取bean

  1. 通过强转类型
        //1.1获取bean,通过强转类型BookDao bookDao = (BookDao) ctx.getBean("bookDao");bookDao.save();
  1. 第二个参数指定类型
        BookDao bookDao = ctx.getBean("bookDao", BookDao.class);bookDao.save();
  1. 按照类型找
        //1.3 按照类型找,要求容器中只有一个就好,不然找不到BookDao bookDao = ctx.getBean(BookDao.class);bookDao.save();
  1. 总结

在这里插入图片描述

9.3 容器类层次结构

  1. ApplicationContext,ConfigurableApplicationContext接口
  • ApplicationContext接口提供了基础功能,ConfigurableApplicationContext接口对ApplicationContext接口实现了功能的追加

  • ClassPathXmlApplicationContext和FileSystemXmlApplicationContext是两个常用的实现类

  • ApplicationContext接口的上层接口是BeanFactory

在这里插入图片描述

在这里插入图片描述

  1. 容器类结构图

在这里插入图片描述

BeanFactory是顶层接口

ApplicationContext常用接口

ConfigurableApplicationContext关闭容器的

ClassPathXmlApplicationContext是常用实现类:

ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);

9.4 BeanFactory

在这里插入图片描述

  1. 代码
  • AppForBeanFactory

BeanFactory来获取容器,通过ClassPathResource来造resources,然后把xml传进去

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();}
}
  1. 和ApplicationContext获取容器的区别

加载bean的时机不同

  • 接口实现类BookDaoImpl写一个构造器
public class BookDaoImpl implements BookDao{public BookDaoImpl(){System.out.println("constructor");
}public void save(){System.out.println("book dao save");}
}
  • 用BeanFactory获取bean
public class AppForBeanFactory {public static void main(String[] args) {Resource resources = new ClassPathResource("applicationContext.xml");BeanFactory bf = new XmlBeanFactory(resources);}
}
  • 结果
Process finished with exit code 0
  • 用ApplicationContext获取bean
public class App2 {public static void main(String[] args) {//1.记载类路径下的配置文件ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");}
}
  • 结果

ApplicationContext初始化会提前加载

constructorProcess finished with exit code 0

如果要延迟,可以在appliacation.xnl中延迟加载

    

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...