首页 > 其他分享 >ApplicationContextAware获取IOC容器

ApplicationContextAware获取IOC容器

时间:2024-06-10 10:43:37浏览次数:9  
标签:ApplicationContextAware 容器 applicationContext 获取 ApplicationContext IOC

目录

常见Aware实现

接口 作用
ApplicationContextAware 获取当前应用的上下文对象
EnvironmentAware 获取环境变量,包括我们配置的以及系统的
ApplicationEventPublisherAware 获取应用事件发布器,可以发布我们监听的事件
BeanNameAware 获取容器中的bean的名称
BeanClassLoaderAware 获取bean的类加载器
BeanFactoryAware 获取bean的创建工厂对象,如果我们要创建,可以试试通过他来创建
EmbeddedValueResolverAware 获取spring容器加载的properties文件属性值
ResourceLoaderAware 获取资源加载器,我们要加载自己的资源,可以使用他
MessageSourceAware 获取文本信息 ,解析消息

ApplicationContextAware作用

1、ApplicationContext是什么?

ApplicationContext是我们常用的IOC容器,而他的顶层接口便是BeanFactoryApplicationContextBeanFactory做了拓展,功能更加强大。

2、ApplicationContextAware作用

获取IOC容器有三种方式,就是使用ApplicationContext接口下的三个实现类:

ClassPathXmlApplicationContext

FileSystemXmlApplicationContext

AnnotationConfigApplicationContext

SpringBoot通过回调的方式,将其资源传递给用户,ApplicationContextAware接口用来获取框架自动初始化的ioc容器对象。

public interface ApplicationContextAware extends Aware {

    void setApplicationContext(ApplicationContext applicationContext) throws BeansException;

}

ApplicationContextAware使用

1、编写一个类,实现ApplicationContextAware接口,并且覆盖其方法

2、定义一个内部成员保存IOC容器,后面需要用的时候直接获取

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class MyApplicationContextAware implements ApplicationContextAware {
    // 定义静态ApplicationContext
    private static ApplicationContext applicationContext = null;
    
    /**
     * 重写接口的方法,springboot会回调这个函数,该方法的参数为框架自动加载的IOC容器对象
     * 该方法在启动项目的时候会自动执行,前提是该类上有IOC相关注解,例如@Component
     * 
     * @param applicationContext IOC容器applicationContext
     * @throws BeansException
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        // 将框架加载的ioc赋值给全局静态ioc
        AppContextUtil.applicationContext = applicationContext;
        log.info("==================ApplicationContext加载成功==================");
    }
    
    /** 
    * 获取applicationContext
    */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    
    /** 
    * 通过name获取 Bean
    */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    /** 
    * 通过class获取Bean
    */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
    
    /** 
    * 通过name,以及Clazz返回指定的Bean
    */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }  
}

标签:ApplicationContextAware,容器,applicationContext,获取,ApplicationContext,IOC
From: https://www.cnblogs.com/leizia/p/18240469

相关文章

  • C# WPF入门学习主线篇(十六)—— Grid布局容器
    C#WPF入门学习主线篇(十六)——Grid布局容器欢迎来到C#WPF入门学习系列的第十六篇。在前几篇文章中,我们已经探讨了Canvas、StackPanel、WrapPanel和DockPanel布局容器及其使用方法。本篇博客将介绍另一种功能强大且灵活的布局容器——Grid。通过本文,您将学习如何使用......
  • HarmonyOS ArkTS组件 | Flex 以弹性方式布局子组件的容器组件 学习记录
    HarmonyOSArkTS组件|Flex以弹性方式布局子组件的容器组件学习记录前言:最近需要用到弹性布局,记录一下。(忽略图片水印QAQ)说明:Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。Flex组件主轴默认不设置时撑满父容器,Column、Row组......
  • IT闲谈——什么是容器?
    目录什么是容器一、容器的起源与发展二、目前使用较多的容器三、容器能用来做什么四、容器的应用场景什么是容器随着云计算和微服务的兴起,容器技术逐渐成为IT行业的热门话题。容器,简而言之,是一种轻量级的、可移植的、独立的软件包,它包含了运行某个软件所需的所有内......
  • Spring基础 - Spring核心之控制反转(IOC)
    Spring基础-Spring核心之控制反转(IOC)IoC(Inversionofcontrol)IoC不是Spring提出来的,它们在Spring之前其实已经存在了,只不过当时更加偏向于理论。Spring在技术层次将这个思想进行了很好的实现。 什么是IoC?IoC(InversionofControl)即控制反转/反转控制。它是一......
  • k8s容器网络ovs vxlan流向总结
    ovs流表刷在br-int网桥上。容器网卡eth0另一端在ovsbr-int网桥上。容器网关gw在br-int网桥上,ip地址是从pod网段中分配。br-int网桥上有vxlan类型ovs端口,用于封包和解包。同节点主机->容器路由判断->iptablesOUTPUT->iptablesPOSTROUTING->容器网关->容器网卡ping容器IP通......
  • 使用Python进行容器编排【Docker Compose与Kubernetes的比较】
    ......
  • 小陈的容器镜像站
    小陈的容器镜像站背景由于不可抗力原因建立了镜像站,支持多平台容器镜像代理。镜像使用优先级:官方地址>镜像地址>阿里云地址替换地址gcr.io>>>>>gcr.chenby.cnquay.io>>>>>quay.chenby.cnghcr.io>>>>>ghcr.chenby.cndocker.io>>>>>......
  • Spring家族框架——Spring3——IOC基于XML创建对象的方式
    ......
  • Java开发必读,谈谈对Spring IOC与AOP的理解
    本文分享自华为云社区《超详细的Java后台开发面试题之SpringIOC与AOP》,作者:GaussDB数据库。一、前言IOC和AOP是Spring中的两个核心的概念,下面谈谈对这两个概念的理解。二、IOC(InverseofControl)控制反转,也可以称为依赖倒置。所谓依赖,从程序的角度看,就是比如A要调用B的方法......
  • 超越预期:Containerd 如何成为 Kubernetes 的首选容器运行时
    >作者:尹珉,KubeSphereAmbassado,rKubeSphereContributor,KubeSphere社区用户委员会杭州站站长。踏上Containerd技术之旅容器技术已经成为现代软件开发和部署的核心工具。通过容器,开发者可以创建轻量级、便携的运行环境,从而简化应用程序的开发、测试和部署流程。在容器技术......