当前位置: 首页 > news >正文

ApplicationContext接口实现(二)

       applicationContext接口的第二种实现类FileSystemXmlApplicationContext是基于磁盘路径读取配置文件并注入到Spring容器中的,和ClassPathXmlApplicationContext的实现方式类似。

      整体代码如下:

package com.example.springdemo.demos.a23;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;/*** @author zhou* @version 1.0* @description TODO* @date 2025/9/24 22:43*/
public class TestApplicationContect {private static final Logger log = LoggerFactory.getLogger(TestApplicationContect.class);public static void main(String[] args) {//testClassPathXmlApplicationContext();testFileSystemXmlApplicationContext();}public static void testClassPathXmlApplicationContext(){ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("a01.xml");for (String name : context.getBeanDefinitionNames()){System.out.println(name);}System.out.println(context.getBean(Bean2.class).getBean1());}public static void testFileSystemXmlApplicationContext(){FileSystemXmlApplicationContext context1 = new FileSystemXmlApplicationContext("D:\\javacode\\springDemo\\src\\main\\resources\\a01.xml");for (String name : context1.getBeanDefinitionNames()){System.out.println(name);}System.out.println(context1.getBean(Bean2.class).getBean1());}static class Bean1{}static class Bean2{private Bean1 bean1;public void setBean1(Bean1 bean1){this.bean1 = bean1;}public Bean1 getBean1(){return bean1;}}
}

输出结果:

       上面的实现方式读取的是文件的绝对路径,也可以用相对路径的方式实现。

       那么Spring内部这两个接口读取文件的原理是怎么样的的呢?其实它也是用到了我们之前讲的BeanFactory接口去实现的。

 public static void main(String[] args) {//testClassPathXmlApplicationContext();//testFileSystemXmlApplicationContext();DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();System.out.println("读取之前....");for(String name : beanFactory.getBeanDefinitionNames()){System.out.println(name);}XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);reader.loadBeanDefinitions(new FileSystemResource("src\\main\\resources\\a01.xml"));System.out.println("读取之后");for(String name : beanFactory.getBeanDefinitionNames()){System.out.println(name);}}

      打印结果:

       可以看到Spring内部先通过XmlBeanDefinitionReader读取配置的Bean,使用beanFactory接口去定义Bean并注入到容器内。

http://www.dtcms.com/a/407424.html

相关文章:

  • BMAD方法论:敏捷价值、原则映射与全生命周期技术
  • 龙游网站建设专业网站建设代理
  • 《道德经》第一章
  • dinov3 foreground_segmentation.ipynb魔改py ,不走torch.hub 训练
  • 广饶县住房和城乡建设局网站系统下载 网站 源码
  • 重庆建站塔山双喜烟台网站设计制作公司电话
  • 杭州网站制作报价移动网站建站视频
  • 如何进行网站改版设计大型网站开发实战
  • 【C++】深入理解string类(1)
  • 浙江省建设厅官方网站移动互联网应用程序个人信息保护管理暂行规定(征求意见稿)
  • 兖州中材建设有限公司网站苏州的网络公司网站建设
  • 26X00.6588_GE_RELEASE_SVC_IM.250918-1932_CLIENT_IOT_LTSC_OEM_X64FRE_ZH-CN.iso
  • 旅游电子商务网站建设小百姓这个网站谁做的
  • Linux系统--进程信号
  • 门户网站盈利选服务好的佛山网站建设
  • 【开题答辩全过程】以 “物联网医院”-移动护理系统为例,包含答辩的问题和答案
  • 做网站的工作量怎么编辑网站内容
  • 基于STM32单片机的温湿度采集循迹避障APP小车
  • 单片机--概述
  • 文件与内容查找,压缩与解压
  • Emacs折腾日记(三十一)——org mode入门
  • 做网站推广的好处青岛市住房和城乡建设局官方网站
  • 科技网站域名北京顺义网站建设
  • 电子政务建设网站图片十大ppt模板免费下载网站
  • CentOS 7 安装并配置静态网络
  • 如何做网站使用手册济南网站定制策划
  • 什么网站可以做推广的宣传制作清单及价格
  • 龙海网站建设价格商城小程序开发哪家好
  • 厦门汽车充电站建设报备网站深圳浪尖工业设计公司
  • 创意交互设计广东短视频seo搜索哪家好