SpringBoot——Spring容器工具类SpringContextUtils.java
SpringBoot——容器工具类SpringContextUtils.java
更多精彩内容,欢迎关注我的微信公众号:编程Thinker (code_thinker_666)背景 ? 在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 发布!
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- Activiti(一)SpringBoot2集成Activiti6
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议