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.. .
|
分享到:
相关推荐
4.6.1.2 销毁回调.. 70 4.6.1.3 默认的初始化和销毁方法 71 4.6.1.4 组合生命周期机制.. 72 4.6.1.5 启动和关闭回调 73 4.6.1.6 在非Web 应用中,优雅地关闭Spring IoC 容器 74 4.6.2 ...
java.lang.NoClassDefFoundError: org/springframework/beans/factory/BeanNameAware 1 2 根据错误加入 spring-beans-4.x.x.RELEASE.jar 1 2 接着报错 java.lang.NoClassDefFoundError: org/springframework/...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对...通过FactoryBean结合InvocationHandler关于动态代理invoke()方法的理解5.BeanNameAware 7.BeanFactoryPostPro
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用服务器...
(3)如果Bean实现了BeanNameAware接口,则Spring调用Bean的setBeanName()方法传入当前Bean的id值。 (4)如果Bean实现了BeanFactoryAware接口,则Spring调用setBeanFactory()方法传入当前工厂实例的引用。 (5)...
定义,初始化,使用,销毁 待补充... 3.意识到弹簧-让bean获取spring容器的服务 BeanNameAware可以获取容器中bean的名称 ApplicationContextAware当前的applicationContext,这也可以调用容器的服务 4. Bean的自动...
1.3 使用方案................................................................................................................................................ 10 1.3.1 依赖管理和命名规约 ..................
使用容器发布事件 Spring高级话题 Spring Aware BeanNameAware BeanFactoryAware ApplicationContextAware MessageSourceAware ApplicationEventPublisherAware ResourceLoaderAware 多...
BeanNameAware BeanNameUrlHandlerMapping BeanNameViewResolver BeanNotOfRequiredTypeException BeanPostProcessor BeanPropertyBindingResult BeanPropertySqlParameterSource BeanReference ...
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................