在使用spring编程时,常常会遇到想根据bean的名称来获取相应的bean对象,这时候,就可以通过实现BeanFactoryAware来满足需求,代码很简单:
@Servicepublic class BeanFactoryHelper implements BeanFactoryAware {
private static BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public static Object getBean(String beanName){
if(beanFactory == null){
throw new NullPointerException("BeanFactory is null!");
}
return beanFactory.getBean(beanName); } }
还有一种方式是实现ApplicationContextAware接口,代码也很简单:
@Service
public class ApplicationContextHelper implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public static Object getBean(String beanName){
if(applicationContext == null){
throw new NullPointerException("ApplicationContext is null!");
}
return applicationContext.getBean(beanName);
}
}
上面两种方法,只有容器启动的时候,才会把 BeanFactory 和 ApplicationContext 注入到自定义的helper类中,如果在本地junit测试的时候,如果需要根据bean的名称获取bean对象,则可以通过ClassPathXmlApplicationContext来获取一个ApplicationContext,代码如下:
@Test
public void test() throws SQLException {
//通过从classpath中加载spring-mybatis.xml实现bean的获取
ApplicationContext context = new ClassPathXmlApplicationContext("spring-mybatis.xml");
IUserService userService = (IUserService) context.getBean("userService");
User user = new User();
user.setName("test");
user.setAge(20);
userService.addUser(user);
}
总结
以上就是小编分享给大家的Java编程实现Aware接口自定义获取bean的两种方式的全部内容,希望对大家有所帮助。如果有什么问题,可以留言,小编会及时回复大家。感谢大家对本站的支持!
# spring
# bean
# 接口
# 自定义bean
# 使用Spring底层组件实现Aware接口
# SpringBoot ApplicationContextAware拓展接口使用详解
# Spring的Aware接口实现及执行顺序详解
# 详解spring中的Aware接口功能
# Spring的Aware接口你知道多少
# Spring中@Import的各种用法以及ImportAware接口详解
# 一文看懂 Spring Aware 接口功能
# 两种
# 自定义
# 小编
# 有什么
# 也很
# 给大家
# 很简单
# 会把
# 则可
# 常常会
# 感谢大家
# 就可以
# 类中
# 这时候
# 加载
# Object
# BeansException
# pre
相关文章:
建站主机类型有哪些?如何正确选型
如何快速搭建高效WAP手机网站?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何彻底删除建站之星生成的Banner?
广州建站公司哪家好?十大优质服务商推荐
如何在景安服务器上快速搭建个人网站?
C++如何使用std::optional?(处理可选值)
如何通过宝塔面板实现本地网站访问?
如何使用Golang安装API文档生成工具_快速生成接口文档
建站之星2.7模板快速切换与批量管理功能操作指南
制作证书网站有哪些,全国城建培训中心证书查询官网?
怀化网站制作公司,怀化新生儿上户网上办理流程?
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何通过西部建站助手安装IIS服务器?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站org新手必看:2024最新搭建流程与模板选择技巧
详解jQuery停止动画——stop()方法的使用
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
香港服务器如何优化才能显著提升网站加载速度?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何基于PHP生成高效IDC网络公司建站源码?
如何快速搭建个人网站并优化SEO?
如何通过建站之星自助学习解决操作问题?
安云自助建站系统如何快速提升SEO排名?
建站之星备案是否影响网站上线时间?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何快速查询域名建站关键信息?
如何用PHP快速搭建CMS系统?
c# 在ASP.NET Core中管理和取消后台任务
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何在景安云服务器上绑定域名并配置虚拟主机?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
网页设计与网站制作内容,怎样注册网站?
非常酷的网站设计制作软件,酷培ai教育官方网站?
建站主机是否等同于虚拟主机?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
建站主机默认首页配置指南:核心功能与访问路径优化
制作旅游网站html,怎样注册旅游网站?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
已有域名能否直接搭建网站?
TestNG的testng.xml配置文件怎么写
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。