首页 > 其他分享 >Spring中获取IOC容器中的Bean实例工具封装

Spring中获取IOC容器中的Bean实例工具封装

时间:2023-03-26 15:14:37浏览次数:35  
标签:applicationContext return ApplicationContext Spring bean 获取 Bean 实例 IOC

在spring中获取Bean的方式有很多们,这里使用实现ApplicationContextAware接口的方式封装一个可以快速获取Bean实例的方式,具体实现实例:

 

实现ApplicationContextAware接口获取程序运行上下文:


import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * 描述:获取spring上下文环境,即ApplicationContext
 *
 * @author SXT
 * @version 1.0
 * @date 2022/10/23
 */
@Component
public final class ApplicationContextHandler implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    /**
     * 获取运行程序的上下文环境
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ApplicationContextHandler.applicationContext = applicationContext;
    }

    /**
     * 获取运行程序的上下文环境 applicationContext
     * @return bean实例
     */
    public static ApplicationContext getApplicationContext(){
        assertApplicationContext();
        return applicationContext;
    }

    private static void assertApplicationContext(){
        if (null == applicationContext) {
            throw new RuntimeException("ApplicationContextHandler中applicationContext属性为null,请确保ApplicationContext正常注入");
        }
    }
}

 

封装获取bean实例工具类:

import org.springframework.context.ApplicationContext;

/**
 * 描述:获取IOC容器中的bean实例
 *
 * @author SXT
 * @version 1.0
 * @date 2022/10/23
 */
public final class BeanUtils {

    private static ApplicationContext applicationContext = ApplicationContextHandler.getApplicationContext();

    private BeanUtils(){}

    /**
     * 获取指定的bean
     * @return bean实例
     */
    public static <T> T getBean(String beanName,Class<T> tClass){
        return applicationContext.getBean(beanName,tClass);
    }

    /**
     * 获取指定bean名实例
     * @return bean实例
     */
    @SuppressWarnings("unchecked")
    public static <T> T getBean(String beanName){
        return (T)applicationContext.getBean(beanName);
    }

    /**
     * 获取指定bean类型实例
     * @return bean实例
     */
    public static <T> T getBean(Class<T> tClass){
        return applicationContext.getBean(tClass);
    }

}

 

标签:applicationContext,return,ApplicationContext,Spring,bean,获取,Bean,实例,IOC
From: https://www.cnblogs.com/qiushuiyu-108/p/17258690.html

相关文章

  • java——spring boot集成kafka——broker、主题、分区、副本——概念理解
    一、代理商Broker 在之前我们已经为大家介绍了生产者向消息队列中投递消息,消费者从消息队列中拉取数据。 在kafka消息队列中有一个非常重要的概念就是代理Broker,大家......
  • Mybatis源码(十一):Mybatis与Spring的整合
    一、搭建mybtais-spring运行环境1、创建数据表并初始化CREATETABLE`user`(`id`int(8)NOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(32)CHARACTE......
  • spring源码环境搭建
    spring源码环境搭建组件版本jdk1.8.0_192spring-framework5.3.xgradle7.5.1idea2022.3.3aspectJ1.9可根据spring-framwork项目说明灵活选择......
  • Spring的Bean实例化过程应该是怎样的?
    Spring将管理的一个个的依赖对象称之为Bean。SpringIOC容器就好像一个生产产品的流水线上的机器,Spring创建出来的Bean就好像是流水线的终点生产出来的一个个精美绝伦的产......
  • 关于Java:使用Mockito注入自动装配的bean并在模拟上设置一些属性
    demo/***@authorlfy*@Description支付上下文引用支付策略;这个上下文也是模板类;定义好算法步骤*@create2022-12-2822:46*/@Service@Slf4j//模板类pub......
  • org.springframework.dao.TransientDataAccessResourceException: Error attempting t
    问题:mybatis查询的时候,始终报这个错。我看了字段,应该是ClickNumber是Integer,为什么会报classification的问题。我试了几种方式,但是还是有这个问题。包括使用resultMap来进......
  • Spring AOP 和 AspectJ AOP 有什么区别?
    什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-OrientedPrograming,面向对象编程)的补充和完善。AOP技它利用一种称为“横切”的技术,剖解开封装的......
  • 【Spring MVC】请求处理过程
    1 前言前面分析了SpringMVC的创建过程,本章分析SpringMVC是怎么处理请求的。我们这里分两步:首先分析HtpServletBean、FrameworkServlet和DispatcherServlet这......
  • SpringCloud快速入门及详解
    一、SpringCloud简介 SpringCloud是一种用于构建企业级应用程序的框架,它是基于SpringFramework构建的。SpringCloud通过提供集成的组件来简化微服务应用程序的开发,这......
  • Spring快速入门及详解
    一、Spring简介1.介绍 Spring是一个开源框架,它的设计目标是用于解决企业级应用开发的复杂性和困难性。Spring框架采用了依赖注入(DI)和面向切面编程(AOP)两种基本的编程......