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.. .
|
分享到:
相关推荐
在Spring框架中,回调接口是实现特定功能的关键组件,它们允许受管理的Bean与Spring容器进行交互,并在Bean生命周期的不同阶段执行自定义操作。以下是一些主要的回调接口及其详细说明: 1. **BeanClassLoaderAware*...
- Spring容器的生命周期包括对象实例化、属性设置、接口回调(如`BeanNameAware`、`BeanFactoryAware`等)以及初始化和销毁方法的调用。 6. Spring生命周期的11步: - 对象实例化:创建Bean对象。 - 属性封装:...
- **BeanNameAware**:Spring容器会回调该接口的`setBeanName`方法,将bean的名称传递给bean实例。 - **BeanFactoryAware**:该接口的`setBeanFactory`方法会被Spring容器回调,将当前的`BeanFactory`实例传递给...
- 从实例化到销毁,Bean经历一系列步骤,包括设置属性、接口回调、初始化方法的调用等。 - 最终,当Spring容器关闭或者Bean不再需要时,Spring会调用`DisposableBean`的`destroy()`方法或指定的销毁方法。 了解和...
java.lang.NoClassDefFoundError: org/springframework/beans/factory/BeanNameAware 1 2 根据错误加入 spring-beans-4.x.x.RELEASE.jar 1 2 接着报错 java.lang.NoClassDefFoundError: org/springframework/...
- **回调机制**:列出Spring支持的各种回调接口,如BeanNameAware、BeanFactoryAware等,并解释其触发时机。 **2.10 命名空间** - **实用工具**:描述`<util/>`命名空间提供的便捷功能,简化配置文件编写。 **...
Spring还支持自定义Bean的属性,包括Aware接口的使用,例如ApplicationContextAware或BeanNameAware。 - **Aware接口**:通过实现特定的Aware接口,Bean可以获得Spring容器中的资源和信息。 - **自定义属性**:...
- 介绍了如何使用初始化和销毁回调来管理bean的生命周期。 - **4.6.2 ApplicationContextAware和BeanNameAware** - 介绍了如何让bean实现这两个接口以获得额外的信息。 - **4.6.3 其它Aware接口** - 介绍了Spring...
在Spring框架中,获取Bean本身的id操作可以通过实现BeanNameAware接口来实现。通过setBeanName()方法,我们可以获取到Bean的配置id,并将其保存在实例变量中。这样,我们就可以在需要时访问Bean的配置id。 在实际...
4. **BeanNameAware 接口回调**:如果该 Bean 实现了 `BeanNameAware` 接口,Spring 将 Bean 的 ID 传递给 `setBeanName()` 方法。 5. **BeanFactoryAware 接口回调**:如果该 Bean 实现了 `BeanFactoryAware` 接口...
- **销毁回调**:容器销毁Bean前调用的方法。 - **默认初始化和销毁方法**:Spring提供了一些默认的初始化和销毁方法。 - **ApplicationContextAware和BeanNameAware** - `ApplicationContextAware`接口让Bean...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对...通过FactoryBean结合InvocationHandler关于动态代理invoke()方法的理解5.BeanNameAware 7.BeanFactoryPostPro
- **Bean 生命周期回调**: - 如果 Bean 实现了 `BeanNameAware` 接口,Spring 会调用 `setBeanName` 方法,传递 Bean 的 ID。 - 实现 `BeanFactoryAware` 的 Bean 会通过 `setBeanFactory` 方法得到 `...
- **初始化回调**:在Bean初始化完成后执行。 - **销毁回调**:在容器关闭前执行。 - **1.6.2 ApplicationContextAware和BeanNameAware** 这些接口允许Bean访问上下文信息或自己的名称。 - **1.6.3 其他Aware...
3. **Bean接口回调**:如果Bean实现了特定的接口,如`BeanNameAware`、`BeanFactoryAware`或`ApplicationContextAware`,Spring会在适当的时候调用对应的回调方法。这些接口允许Bean获取其ID、BeanFactory引用或...
- **初始化回调**: 通过`InitializingBean`接口或者在Bean定义中指定`init-method`属性来定义初始化方法。 - **销毁回调**: 通过`DisposableBean`接口或者在Bean定义中指定`destroy-method`属性来定义销毁方法。 -...
Spring允许自定义Bean的生命周期回调、依赖以及作用域等。 1.6.1 生命周期回调 Spring管理Bean的生命周期,提供了初始化和销毁Bean时调用的方法。 1.6.2 ApplicationContextAware和BeanNameAware接口 实现这两个...