读书人

应用 BeanNameAware 回调本身

发布时间: 2012-07-01 13:15:00 作者: rapoo

使用 BeanNameAware 回调本身

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,BeanNameAwareprivate String beanName;//测试用初始化方法,该方法通过init-method属性确定为初始化方法public void init()System.out.println("正在执行初始化方法init...") ;//实现 InitializingBean 接口必须实现的方法,初始化方法的一种public void afterPropertiesSet() throws ExceptionSystem.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 ExceptionApplicationContext ctx =new FileSysternXmlApplicationContext("bean.xml");Chinese p = (Chinese)ctx.getBean("chinese");

执行结果如下:

[java] 回调 setBeanName方法chinese[java] 正在执行初始化方法afterPropertiesSet.[java] 正在执行初始化方法init.. .

读书人网 >软件架构设计

热点推荐