SpringFramework核心技术一(IOC:使用ICO容器)

简介: 使用容器这ApplicationContext是高级工厂的接口,能够维护不同bean及其依赖项的注册表。使用该方法T getBean(String name, Class requiredType)可以检索bean的实例。

使用容器

这ApplicationContext是高级工厂的接口,能够维护不同bean及其依赖项的注册表。使用该方法T getBean(String name, Class requiredType)可以检索bean的实例。


一、

在ApplicationContext可以读取bean定义并访问它们,如下所示:

1.1 怎么使用容器

首先来看一下容器:
这里写图片描述

1.2

有很多同学一上来就是搞一个New,可是这是一个ApplicationContext接口啊。

//接口是不能直接new着用的,这个是重写。
ApplicationContext applicationContext = new ApplicationContext(){...}

1.3

下面这样用才是对的:ClassPathXmlApplicationContext是类

/**
 * @author:wangdong
 * @description:怎么使用容器
 */
public class Test {

    public static void main(String[] args) {

        // create and configure beans
        //可以从XML文件中读取需要配置Bean并且加载进容器中
        ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
    }

看一下ClassPathXmlApplicationContext类
这里写图片描述

二、下面我们来用一下

package org.springframework.test;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.context.support.GenericGroovyApplicationContext;
import org.springframework.core.ResolvableType;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;

import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.Locale;
import java.util.Map;

/**
 * @author:wangdong
 * @description:怎么使用容器
 */
public class Test {

    public static void main(String[] args) {

        // create and configure beans
        ApplicationContext context1 = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

        // retrieve configured instance(检索配置实例Bean)
        //如果PetStoreService已经创建,并且在上面的.xml文件中已经配置
        PetStoreService service = context1.getBean("petStore", PetStoreService.class);

        //GenericApplicationContext和ClassPathXmlApplicationContext类似
        //只不过这里使用的是.groovy后缀文件
        //使用Groovy配置,bootstrapping看起来非常相似,只是一个不同的上下文实现类,它可以感知Groovy(但也理解XML bean定义):
        ApplicationContext context2 = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");

        //最灵活的变体是GenericApplicationContext与.groovy.xml结合使用
        GenericApplicationContext context3 = new GenericApplicationContext();
        //用于.xml后缀的文件
        new XmlBeanDefinitionReader(context3).loadBeanDefinitions("services.xml", "daos.xml");
        //用于.groovy后缀的文件
        new GroovyBeanDefinitionReader(context3).loadBeanDefinitions("services.groovy", "daos.groovy");

    }
}

可以使用它getBean来检索bean的实例。该ApplicationContext 接口还有其他一些检索bean的方法,但理想情况下,应用程序代码不应该使用它们。事实上,你的应用程序代码根本不应该调用该 getBean()方法,因此完全不依赖于Spring API。例如,Spring与Web框架的集成为各种Web框架组件(如控制器和JSF托管的bean)提供了依赖注入,允许您通过元数据(例如自动装配注释)声明对特定Bean的依赖关系。
未完待续~~~持续更新

目录
相关文章
|
10月前
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
295 5
|
6月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
8月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
8月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
11月前
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
287 18
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
12月前
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
存储 虚拟化 Docker
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
8月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1131 108