首页 > 其他分享 >Spring Bean工具类

Spring Bean工具类

时间:2022-08-27 22:47:52浏览次数:55  
标签:applicationContext return Spring Bean static import 工具 public beanClass

SpringUtils工具类

import cn.caijiajia.framework.util.EnvUtil;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.annotation.OrderUtils;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.*;

/**
 * SpringUtils
 *
 * @author kancy
 * @date 2022/3/7 14:31
 */
@Component
public class SpringUtils implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    public static Object getBean(String beanName){
       return applicationContext.getBean(beanName);
    }

    public static <T> T getBean(String beanName, Class<T> beanClass){
        return applicationContext.getBean(beanName, beanClass);
    }

    public static <T> T getBean(Class<T> beanClass){
        return applicationContext.getBean(beanClass);
    }

    public static <T> Map<String, T> getBeanMap(Class<T> beanClass){
        return applicationContext.getBeansOfType(beanClass);
    }

    public static <T> List<T> getBeans(Class<T> beanClass){
        Map<String, T> beansOfType = applicationContext.getBeansOfType(beanClass);
        if (CollectionUtils.isEmpty(beansOfType)){
            return Collections.emptyList();
        }
        ArrayList<T> beanList = new ArrayList<>(beansOfType.values());
        beanList.sort(Comparator.comparingInt(o -> OrderUtils.getOrder(o.getClass())));
        return beanList;
    }

    public static void publishEvent(Object event){
        applicationContext.publishEvent(event);
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Environment getEnvironment() {
        return applicationContext.getEnvironment();
    }

    public static String getApplicationName() {
        return applicationContext.getApplicationName();
    }

    public static String getEnv() {
        return EnvUtil.getEnv().name();
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtils.applicationContext = applicationContext;
    }
}

标签:applicationContext,return,Spring,Bean,static,import,工具,public,beanClass
From: https://www.cnblogs.com/kancy/p/springutils.html

相关文章

  • JavaBean属性赋值
    JavaBeanUtils工具类importlombok.experimental.UtilityClass;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.BeanUtils;importorg.springfr......
  • 6 - Mac端Git可视化工具SmartSVN
     参考:https://blog.csdn.net/liaowenxiong/article/details/115439749 下载地址:https://www.smartsvn.com/download/......
  • 5 - Windows端Git可视化工具TortoiseGit(小乌龟)
     TortoiseGit是一个开放的Git版本控制系统的源客户端,只运行于Windows系统中,与操作系统紧密结合,使用起来非常方便 一、TortoiseGit的下载安装1、TortoiseGit软件链接:h......
  • Spring学习笔记
    Spring学习1.概述​ Spring是一个轻量级的Java开发框架,它是为了解决企业开发的复杂性而创建的,可以帮助开发人员创建对象管理对象之间的关系。​ Spring的核心是......
  • Spring @Autowired 注解静态变量
    最近应该项目的需要,需要使用一个工具类来访问数据库。但是这个工具类又被定义成静态访问了。我们也需要设置一个静态变量来访问数据库。@Autowiredprivatesta......
  • HTML转PDF工具一览
    Onthiswebsite,Ishowyoutherenderingresultsofdifferenthtml2pdftools.IcomparemPDF,typeset.sh,PDFreactor,wkhtmltopdf,WeasyPrint,Prince,......
  • 【SpringBoot】整合Shiro
    1.什么是Shiro?ApacheShiro是一个java的安全权限框架。Shiro是可以非常容易得开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成,认......
  • SpringCloud 使用 LoadBalance 实现客户端负载均衡
    SpringCloud从2020.0.1版本开始,从Eureka中移除了Ribbon组件,使用LoadBalance组件来代替Ribbon实现客户端负载均衡。LoadBalance组件相对于Ribbon来说,仅支持两......
  • SpringBoot日志系统——logback
    logback是SpringBoot内置的日志处理框架,你会发现spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是SpringBoot默认的日志框架logback。而spr......
  • 版本控制工具Git介绍-01
    使用版本控制工具是为了方便团队开发,比如多人共同维护一个项目的时候,用版本控制工具可以很方便的维护项目代码,如果哪天你改了一个版本,出问题了,我们也可以很快的找到你改了......