千家信息网

Springboot怎么通过自定义工具类获取bean

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"Springboot怎么通过自定义工具类获取bean",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Springboot怎么通过自
千家信息网最后更新 2026年11月03日Springboot怎么通过自定义工具类获取bean

这篇文章主要为大家展示了"Springboot怎么通过自定义工具类获取bean",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Springboot怎么通过自定义工具类获取bean"这篇文章吧。

Springboot 自定义工具类获取bean

/** * Created with IntelliJ IDEA. * * @Auther: zp * @Date: 2021/03/26/13:32 * @Description: 通过beanFactory获取spring管理的bean对象工具类 */@Componentpublic class ApplicationContextUtil implements ApplicationContextAware {    private static ApplicationContext context;     // springboot加载完成后会把beanfactory作为参数传给次方法,然后我们可以把工厂赋值给context。    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        context = applicationContext;    }    // 通过context获取bean    public static Object getBean(String beanName) {        return context.getBean(beanName);    }}

在工具类注入bean的三种方式

1. 需求/目的

比如:在进行使用HandlerInterceptorAdapter拦截器时,需要访问数据库来判断是否拦截请求,这时就需要在拦截器的判断类中注入Dao或Service对象来执行sql语句。而直接使用@Autowired无法进行注入。

2.使用环境

spring boot 2.0.3

3.方法一:获取ApplicationContext上下文

在applicationContext对象中可以获取到所有的bean

第一步:准备ApplicationContextAware的实现类,用于获取applicationContext对象

import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;import com.authstr.ff.utils.exception.Assert;@Componentpublic class SpringUtils implements ApplicationContextAware {    private static Log log = LogFactory.getLog(SpringUtils.class);    private static ApplicationContext applicationContext;    public   void setApplicationContext(ApplicationContext applicationContext) {        SpringUtils.applicationContext = applicationContext;    }    private static ApplicationContext getContext() {        return applicationContext;    }    public static Object getBean(String beanId) {        return SpringUtils.getBean(Object.class, beanId);    }    public static  T getBean(Class clazz, String beanId) throws ClassCastException {        ApplicationContext context = SpringUtils.getContext();        Assert.isTrue(StringUtils.hasText(beanId), "beanId must not null!",true);        boolean a=context.containsBean(beanId);        Assert.isTrue(context.containsBean(beanId), "beanId :[" + beanId + "] is not exist!",true);        Object bean = null;        bean = context.getBean(beanId);        return (T)bean;    }}

这是已经写好的工具类,可以根据bean的id获取对应的bean

第二步: 对要获取的bean设置id

如:

@Component("basicDaoImpl")public class BasicDaoImpl extends AbstractDao implements BasicDao

第三步: 在要使用的类中写一个方便调用的方法

public BasicDaoImpl getBasicDaoImpl (){        return SpringUtils.getBean(BasicDaoImpl .class, "basicDaoImpl");    }

4.方法二:将工具类的对象也添加为bean

第一步:当前类添加@Component注解

第二步:对要获取的对象使用@Autowired 注解

@Autowired private BasicDaoImpl basicDaoImpl;

第三步:在创建该工具类的地方,这样定义

@Bean  public AuthInterceptor authInterceptor(){        return new AuthInterceptor();    }

5.方法三:在spring Boot 启动时创建工具类自身的静态对象

在本质上,同方法二

第一步:当前类添加@Component注解

第二步:在工具类创建一个自身的静态对象

public static AuthInterceptor authInterceptor;

第三步:使用@PostConstruct注解,在springboot加载时执行该方法

  @PostConstruct    public void init() {        authInterceptor= this;        AuthInterceptor .authInterceptor= this.authInterceptor;    }

以上是"Springboot怎么通过自定义工具类获取bean"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

工具 对象 方法 注解 内容 篇文章 静态 拦截器 学习 帮助 上下 上下文 参数 地方 工厂 数据 数据库 方式 易懂 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技工作委员会副主任毛军 互联网金融监管科技数据 科技与互联网发展 互联网医疗科技 奇酷互联网科技公司 艾特科技互联网 互联网科技创新企业排名 互联网企业和科技型企业 苏州五指互联网络科技有限 天津腾达互联网科技有限公司 燊美集互联网科技有限公司 玉溪新华互联网科技好不好 保险科技服务互联网营销体系 科技互联网的核心竞争力 富国互联网科技002692 新氧科技和美国互联网有关系吗 同城互联网络科技 三亚科技创新互联网基地 东风日产互联网科技公司叫什么 什么是科技互联网 新浪科技互联网 碳银互联网科技有限公司 互联网科技的未来发展 哈尔滨秒房互联网科技有限公司 宁波青枫互联网科技有限公司 中国互联网公司排名锤子科技 广东工业互联网大赛深圳学泰科技 陕西九四连强互联网科技有限公司 长沙易易互联网科技有限公司
0