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中延迟加载

    

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
报告实验.pdfbase.tt... 这个错误通常是由于找不到字体文件或者文件路径不正确导致的。以下是一些解决方法:确认字体文件是否存在:...