SpringBoot——Spring容器工具类SpringContextUtils.java

SpringBoot——容器工具类SpringContextUtils.java

更多精彩内容,欢迎关注我的微信公众号:编程Thinker (code_thinker_666)
SpringBoot——Spring容器工具类SpringContextUtils.java
文章图片

背景 ? 在SpringBoot项目中,通常会遇到工具类中调用Spring容器中的Bean,由于工具类通常是静态方法,我们通常不使用自动注入,这时,就需要一种不自动注入便可以从Spring容器中拿出Bean的工具了,这里我把我日常用的工具类SpringContextUtils.java,分享给大家,希望可以帮到你。
工具类 git地址:https://gitee.com/learning-wo...
【SpringBoot——Spring容器工具类SpringContextUtils.java】源码如下:
import lombok.Data; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.Map; /** * Spring容器工具类 * * @author chentiefeng * @date 2020-10-23 11:37 */ @Component public class SpringContextUtils implements ApplicationContextAware { /** * 上下文对象 */ private static final AppContainer APP_CONTAINER = new AppContainer(); @Override public void setApplicationContext(ApplicationContext applicationContext) { APP_CONTAINER.setApplicationContext(applicationContext); }/** * 获取ApplicationContext * * @return */ public static ApplicationContext getApplicationContext() { return APP_CONTAINER.getApplicationContext(); }/** * 通过clazz,从spring容器中获取bean * * @param clazz * @param * @return */ public static T getBean(Class clazz) { return getApplicationContext().getBean(clazz); }/** * 获取某一类型的bean集合 * * @param clazz * @param * @return */ public static Map getBeans(Class clazz) { return getApplicationContext().getBeansOfType(clazz); }/** * 通过name和clazz,从spring容器中获取bean * * @param clazz * @param * @return */ public static T getBean(String name, Class clazz) { return getApplicationContext().getBean(name, clazz); } /** * 静态内部类,用于存放ApplicationContext */ @Data public static class AppContainer { private ApplicationContext applicationContext; }/** * 获取配置文件配置项的值 * * @param key 配置项key */ public static String getEnvironmentProperty(String key) { return getApplicationContext().getEnvironment().getProperty(key); }/** * 获取spring.profiles.active */ public static String[] getActiveProfile() { return getApplicationContext().getEnvironment().getActiveProfiles(); }}

使用示例
/** * 用户工具类,用于获取用户信息 * * @author chentiefeng * @date 2021/2/8 17:38 */ public class UserUtils {/** * 获取当前用户的ID * @return */ public static UUID getCurrentUserId(){ UserService userService = SpringContextUtils.getBeans(UserService.class); return userService.getCurrentUser().getId(); } }

本文由博客一文多发平台 OpenWrite 发布!

    推荐阅读