Spring 源码学习 03:创建 IoC 容器的几种方式

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在上一篇文章末尾画了一幅简图,现在从简图这入手,先来看看如何创建容器!

网络异常,图片无法展示
|


前言


网络异常,图片无法展示
|

在上一篇文章末尾画了一幅简图,现在从简图这入手,先来看看如何创建容器!


创建容器


网络异常,图片无法展示
|

在搭建 Spring 源码阅读环境 时,最后举了一个例子,其实就是创建容器,并从容器中获取 Bean ,来测试环境是否 OK。

根据元数据的不同,创建容器的方式也不同,下面参考官方文档,简单介绍下创建容器的几种方式:


Java 配置获取元数据

public class AnnotationConfigApplicationTest {
  public static void main(String[] args) {
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
    context.register(JavaConfig.class);
    context.refresh();
    System.out.println(context.getBean(UserComponent.class));
  }
}


Xml 获取元数据

public class XmlConfigApplicationTest {
  public static void main(String[] args) {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("SpringConfig.xml");
    System.out.println(context.getBean("bookService"));
  }
}

Groovy 获取元数据

public class GroovyConfigApplicationTest {
  public static void main(String[] args) {
    GenericGroovyApplicationContext context = new GenericGroovyApplicationContext("SpringConfig.groovy");
    System.out.println(context.getBean(NotesServiceImpl.class));
  }
}


GenericApplicationContext

也可以直接创建 GenericApplicationContext 然后在加载元数据配置文件。

public class GenericApplicationTest {
  public static void main(String[] args) {
    GenericApplicationContext context = new GenericApplicationContext();
    new XmlBeanDefinitionReader(context).loadBeanDefinitions("SpringConfig.xml");
    new GroovyBeanDefinitionReader(context).loadBeanDefinitions("SpringConfig.groovy");
    context.refresh();
    System.out.println(context.getBean("bookService"));
    System.out.println(context.getBean(NotesServiceImpl.class));
  }
}


总结


网络异常,图片无法展示
|

本文主要介绍了常用的几种容器的创建,配置文件部分就没有在文章中体现了,如果想了解这部分,可以参考官方文档。

目录
相关文章
|
1月前
|
Java 测试技术 开发工具
ApplicationArguments读取应用程序参数并注入到IOC容器
ApplicationArguments读取应用程序参数并注入到IOC容器
ApplicationArguments读取应用程序参数并注入到IOC容器
|
6天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
1月前
|
Java Spring
使用spring实现邮件的发送(含测试,源码,注释)
使用spring实现邮件的发送(含测试,源码,注释)
7 0
|
1月前
|
存储 前端开发 Java
springboot中的第二个IOC容器BootstrapContext
springboot中的第二个IOC容器BootstrapContext
springboot中的第二个IOC容器BootstrapContext
|
1月前
|
Java 容器 Spring
【spring(一)】核心容器总结
【spring(一)】核心容器总结
|
1月前
|
Java 开发者 容器
【Java】深入了解Spring容器的两个关键组件
【Java】深入了解Spring容器的两个关键组件
10 0
|
1月前
|
XML Java 数据格式
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界 (下)
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界
|
1月前
|
XML Java 数据格式
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界 (上)
Spring 的奇幻起源:从 IoC 容器到 Bean 的魔法世界 (上)
|
6天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
11 0
|
15天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
13 0