Springboot怎么通过自定义工具类获取bean
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章主要为大家展示了"Springboot怎么通过自定义工具类获取bean",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Springboot怎么通过自
千家信息网最后更新 2025年11月16日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安全错误
数据库的锁怎样保障安全
河南电力应急软件开发标准
网络安全手抄报的句子英语
网络安全版报大全
上位机数据库
托管系统软件开发
可以调整数据库列的位置吗
微众银行软件开发待遇
电脑配置管理数据库
h3c服务器导轨安装视频
在服务器上生成文件
网络技术今后发展的趋势
云南3套网络安全
甲骨文全文数据库项目
熙菱信息网络安全业务
网络技术就是信息吗
信息网络安全侦查
核酸数据库查询
数据库设计和开发
上海运维管理软件开发报价
服务器网页登录后连接被重置
查看本地服务器所有端口
软件开发详细书单论坛
包头网络技术操作
网络安全三个特性
网络技术 培训
杭州临安灵讯网络技术经营部
关于网络安全人才培养政策
招银网络科技软件开发岗如何
上海个人软件开发哪个好
网吧落实网络安全的重要性