5.11.4 使用 BeanNameAware 回调本身
如果某个 bean 需要访问配置文件中本身的 id 属性,则可以使用 BeanNameAware 接口,该接口提供了回调本身的能力。实现该接口的 bean,能访问到本身的 id 属性。该接口提供一个方法:voidsetBeanName(String name)。
该方法的 name 参数就是 bean 的 id。该方法在依赖关系设置之后,初始化回调(InitializingBean 的 afterPropertiesSet 方法,或者 init- method 指定的方法)之前被执行。回调 setBeanName 方法可让 bean 获得自己的 id。看如下代码:
public class Chinese implements InitializingBean,BeanNameAware
private String beanName;
//测试用初始化方法,该方法通过init-method属性确定为初始化方法
public void init()
System.out.println("正在执行初始化方法init...") ;
//实现 InitializingBean 接口必须实现的方法,初始化方法的一种
public void afterPropertiesSet() throws Exception
System.out.println("正在执行初始化方法afterPropertiesSet. ..");
/***实现BeanNameAware接口必须实现的方法。
* @Param namebean 的 id.
*1public void setBeanName(String name)
this.beanName = name;
//测试,打印出beanid.
System.out.println("回调 setBeanName方法//+name).;
|
将该 bean 部署在容器中,与普通bean 的部署没有任何区别。在主程序中通过如下代码测试:
public class SpringTest
{
public static voidrnain(String[]args)throws Exception
ApplicationContext ctx =new FileSysternXmlApplicationContext
("bean.xml");Chinese p = (Chinese)ctx.getBean("chinese");
|
执行结果如下:
[java] 回调 setBeanName方法chinese
[java] 正在执行初始化方法afterPropertiesSet.
[java] 正在执行初始化方法init.. .
|
分享到:
相关推荐
2017年存储技术变革与发展的趋势.pdf
毕业论文-qing游戏风格 商业版(GBK)-整站商业源码.zip
实训商业源码-效能-毕业设计.zip
平台跳跃游戏的核心魅力在于重力与控制的精妙平衡。本文将构建角色运动的微分方程模型,解析空中机动算法,并揭示关卡设计中的隐式引力场理论,展现2D平台游戏背后的复杂物理模拟系统。
实训商业源码-签到工具-毕业设计.zip
nsync///////
实训商业源码-票务高级版4.2.9-毕业设计.zip
运算符重载函数(友元函数).cpp
ABAQUS模型定义.pdf
FreeRTOS计数信号量的使用,模拟停车场运行逻辑
毕业论文-方熊表单V1.0.0 开源版-整站商业源码.zip
毕业论文-多商户线下积分商城会员群发V2.5.11 原版-整站商业源码.zip
实训商业源码-新材料-毕业设计.zip
毕业论文-活码自动进群V1.0.0 开源版-整站商业源码.zip
毕业论文-红包拓客生意宝2.0.3 开源版-整站商业源码.zip
Baidunetdisk_AndroidPhone_1023843j (6).apk
【研华科技】以数智融合打造可持续管理的企业未来.pdf
毕业论文-老虎-微信淘宝客6.0.3+老虎-团队合伙人系统2.99.83-整站商业源码.zip
实训商业源码-生意宝 1.6.23-毕业设计.zip
毕业论文-粉色简单的404错误页面源代码-整站商业源码.zip