`
liujianguangaaa
  • 浏览: 231708 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

使用 BeanNameAware 回调本身

    博客分类:
  • java
阅读更多

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.. .
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics