手动从spring BeanFactory 获取bean (二)

Spring手动获取指定Bean 起因由于项目需要把一个项目的某个功能移植到另一个项目中,但是两个项目结构不同,新写的接口不是被Spring容器管理的,没办法在接口中使用@Autowired注解自动注入Serivice(Ps.我这里说的接口是对外接口,不是Java中的interface,实际上是一个类),只能尝试手动注入。在网上查了查最终尝试了三种方式,最终有效的只有方法三,先列出方法,问题分析在后面。方法方法一:使用BeanFac 阅读详情

自己的类 实现org.springframework.beans.factory.BeanFactoryAware 接口  

BeanFactoryAware 接口中只有一个方法  setBeanFactory(BeanFactory beanFactory)

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;

public class SpringBeanFactory implements BeanFactoryAware {

	private static BeanFactory beanFactory;
	
	public static Object getBean(String beanName) {
		 return beanFactory.getBean(beanName);
	}
	
	public static <T> T getBean(String beanName, Class<T> clazs) {
		 return clazs.cast(getBean(beanName));
	}
	
	public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
		SpringBeanFactory.beanFactory = beanFactory;
	}
}


applicationContext.xml

<bean id="springBeanFactory" class="com.xx.service.util.SpringBeanFactory" />

遗留一个问题

spring 容器什么时候 会调用BeanFactoryAware 实现类  也就是说调用SpringBeanFactory   setBeanFactory方法 ?

spring——BeanFactory与ApplicationContext接口、bean标签 控制如何实例化对象a、lazy-init属性(实例化阶段)true:懒加载false:立即加载<beans>里default-lazy-init:当前配置文件里的所有bean对象都设置为懒加载。b、init-method属性用于设置对象 初始化阶段 调用的方法。c、destory-method属性用于设置对象 销毁阶段 调用的方法。d、Scope属性可取值 作用域属性。 阅读详情

相关推荐

在Spring中获取Bean的各种方式

适用于需要手动控制Bean创建和管理的场景,通常在简单的测试或非Spring管理的类中使用。这些方法各有优缺点和适用场景,可以根据具体的需求选择合适的方式来获取Spring Bean。:适用于需要每次调用都返回新的Bean实例的场景(如Prototype作用域的Bean)。:适用于需要在非Spring管理的类中访问Spring管理的Bean。:适用于需要在Java代码中配置Bean而不是使用XML配置的场景。:适用于需要依赖注入的类中,这是Spring中最常用的注入方式。:适用于需要基于名称注入的场景,

Casual_Lei的博客 1522

java bean 工厂模式_通过annotation(注解)实现BeanFactory工厂模式(三)

工厂模式是大家熟知的一种设计模式,在spring BeanFactory将这模式运用自如。 前面讲过如果通过xml配置的方式实现,今天我们来讲讲如何通过注解的方式实现工厂模式。 主要思路扫描classPath下的的类,将这些class存储到setmap中遍历set中的class,找出被自定义facory注解注解过的的class,以beanId,class的对象形式封装到一个map集合里暴露一个方法...

weixin_39719127的博客 545

Ubuntu20.04 安装 MATLAB R2023b 常见问题及解决方案

本文提供了Ubuntu20.04系统上安装MATLAB R2023b的完整指南,包括系统要求检查、依赖项安装、详细安装步骤及常见问题解决方案。特别针对GTK模块加载失败、OpenGL图形加速问题和中文显示乱码等常见问题提供了有效解决方法,帮助用户顺利完成安装并优化使用体验。

weixin_42619061的博客 483

手写简易版Spring框架(十三):通过注解给属性注入配置和Bean对象

手写简易版Spring框架(十三):通过注解给属性注入配置和Bean对象

zhang_qing_yun的博客 544

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 228

别再手动拆解字节了!用博图这个功能指令,5分钟搞定ARRAY转BOOL数组

本文详细介绍了西门子博图中`ARRAY_TO_BOOL`功能指令的高效应用,帮助工程师快速实现ARRAY到BOOL数组的转换。通过实战案例和参数配置指南,展示了如何5分钟内完成传统方法需半小时的任务,大幅提升PLC编程效率,特别适用于通信报文解析和设备状态监控。

weixin_42653691的博客 263

springboot中获取bean对象

springboot中获取bean对象加拓展的工具类 @Component public final class SpringUtils implements BeanFactoryPostProcessor, ApplicationContextAware { /** Spring应用上下文环境 */ private static ConfigurableListableBeanFactory beanFactory; private static ApplicationCont

qq_42577548的博客 1296

逆向学习:从已上线微信小游戏反推Cocos工程结构(以切水果跑酷为例)

本文以“切水果跑酷”为例,详细介绍了如何通过逆向分析已上线的微信小游戏,反推其基于Cocos Creator的原始工程结构。文章深入拆解了编译后的目录骨架、资源加载逻辑与依赖关系,并重点解析了微信平台API的调用特征,为开发者提供了一种高效学习游戏架构与设计模式的实用方法。

kk1234的博客 1073

spring 获取bean对象的方法

1.得到spring上下文对象2.根据上下文对象提供的方法获取到bean3.使用对象。

m0_53653818的博客 2428

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4934

AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例)

本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。

weixin_29093017的博客 256

spring中BeanFactory和FactoryBean的区别

spring中BeanFactory和FactoryBean的区别

淡淡的幸福的博客 7万+

uniapp - H5人脸识别认证与活体检测功能(纯前端免费方案+微信sdk人脸识别)完整源码,微信公众号网页/h5端人脸识别功能人脸核身(微信方案提供后端spring boot+thinkphp源码

uniapp实现人脸认证,uniAPP h5手机拍照+人脸识别,免费人脸识别插件,前端人脸识别解决方案,uniapp H5人脸识别带前后摄像头,人脸识别在H5页面进行采集,微信公众号H5人脸核身,H5端人脸识别功能实现,免费h5人脸识别插件方案,微信公众号H5网页实现人脸识别,uniapp人脸监测,uniapp人脸生物监测,使用uniapp开发H5人脸采集功能/人脸识别功能,uniapp项目—h5端人脸采集功能实现,uniapp vue3人脸核身,H5活体检测认证,人脸认证张嘴摇摇头指引动作,人脸核身 微信

🏆 前端领域优质创作者 3809

Spring之BeanFactory详解

Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用。只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术。也就是说依赖注入是beanFactory生产bean时为了解决bean之间的依赖的一种技术而已。 beanFactory会在bean的生命周期的各个阶段中对bean进行各种管理,并且spring将这些阶段通过各种接口暴露给我们,让我们可以对bean进行各种处理,我们

weixin_44399827的博客 1万+

指纹对抗指南:如何绕过Cloudflare与Akamai的5s盾与浏览器指纹检测

现在的CDN反爬技术虽然越来越强,但是道高一尺魔高一丈,只要掌握了指纹伪造、流量伪装、行为模拟这些核心技术,就可以绕过绝大多数的防护措施。对抗过程中要注意效率和成本的平衡,小规模爬取用Playwright+stealth最方便,大规模爬取用curl_cffi+代理池性价比最高,遇到验证码用打码平台或者自动识别服务,不需要死磕破解。本文介绍的方案已经在实战中验证过,可以绕过95%以上的Cloudflare/Akamai防护,成功率非常高。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 297

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Spring获取Bean的9种方式

.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rgba(37, 41, 51, 1) } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .ma...

程序员小明1024 5142

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Spring - BeanFactory 之手动 Singleton 单例注册

简介 我们知道Spring容器的 Bean 可以是单例 (把 scope 配置为 singleton 或者不设置 scope,即默认是单例),这些单例的 Bean 被初始化之后就被Spring注册到BeanFactory管理了起来,方便下次直接使用。除了配置的单例Bean,我们还可以调用BeanFactory的Bean直接注册一个单例Bean。 SingletonBeanRegistry S...

luzhensmart的专栏 4901

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

简单介绍 Spring 中获取 Bean 的三种方式

了解这些获取 Bean 的方式后,选择适合的获取方法可以大大提高代码的灵活性与可维护性。从依赖注入到手动获取 Bean,各种方式都有它们的使用场景。希望这些技巧能帮助你在 Spring 项目中更加游刃有余!

龚小帅的博客 2256

Spring源码(3) Spring IoC之BeanFactory创建bean和获取bean

bean 对象主要放在 map 里面,map 作为缓存。map 的key 是 bean对象的名称, value 是 bean 对象或者对象工厂。代码详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140155044。详情见: https://blog.youkuaiyun.com/sinat_32502451/article/details/140247662。根据 bean 名称,返回已经注册的单例对象,如果没有注册,则创建并注册一个新对象。

Cyms,BgXmSfXtsj !!!! Battle Each Moment !!!! 1134

SpringBoot获取bean的几种方式

ApplicationObjectSupport类图入下,我们看到它实现了ApplicationContextAware接口,在Spring容器初始化过程中回调方法setApplicationContext来完成ApplicationContext的赋值。通过实现ApplicationContextAware接口,在Spring容器启动时将ApplicationContext注入进去,从而获取ApplicationContext对象,这种方法也是常见的获取Bean的一种方式,推荐使用。

hk000001的博客 5171

Spring容器获取Bean的9种方式

随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean。比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean。本文为大家整理汇总了常见的获取Bean的方式,并提供一些优劣分析,方便大家在使用到时有更好的选择。同时,也会为大家适当的普及和拓展一些相关知识。

tangjieqing的博客 2410

如何手动获取 Spring 容器中的 bean?

本文系统介绍了Spring框架中手动获取Bean的多种方法及其原理。首先解析了IoC容器的核心概念,重点对比了BeanFactory和ApplicationContext的区别。随后详细讲解了五种getBean()方法的使用场景和注意事项,推荐优先使用类型安全的getBean(String name, Class<T> type)方式。文章还提供了多种获取容器实例的进阶技巧,包括实现ApplicationContextAware接口、Web应用特殊方法等。通过源码分析揭示了getBean()的内

油墨香^-^的博客 1275

Spring 源码解读:手动实现BeanFactory的加载与管理

`BeanFactory`是Spring容器的核心接口,负责Bean的加载、实例化及依赖注入。本文将手动实现一个简化版的`BeanFactory`,涵盖Bean的加载与管理,并对比Spring中的`DefaultListableBeanFactory`。通过这一分析,读者将深入理解`BeanFactory`的工作原理以及它在Spring框架中的重要性。

捕风捉你 · 星桥API接入与大模型实战 1064

【Spring】普通bean、FactoryBean、BeanFactory的区别与联系

在Spring中这三点比较容易混淆:一. FactoryBean、BeanFactory的区别其实这两点没有什么联系,只是命名上比较相似,所以常常被拿出来比较。BeanFactoryBeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器实现提供了最基本的规范,例如DefaultListableBeanFactory, XmlBeanFactory, Applic

惜暮 5003
上一篇: 手动从spring WebApplicationContext 获取bean (一)
下一篇: Spring aware相关接口 浅析
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值