Spring之获得Bean本身的id

在某些极端情况下,业务要求程序员在开发Bean类时能预先知道该Bean的配置id,此时可借助Spring提供的BeanNameAware接口,通过该接口即可提交预知Bean的配置id.BeanNameAware接口提供了一个方法:setBeanName(Sring name),该方法的name参数就是Bean的id,实现该方法的Bean类就可通过该方法来获得部署该Bean的id了。

下面定义一个Bean,该Bean实现了BeanNameAware接口。

public class Chinese implements BeanNameAware
{
	// 保存部署该Bean时指定的id属性
	private String beanName;
	public void setBeanName(String name)
	{
		this.beanName = name;
	}
	public void info()
	{
		System.out.println("Chinese实现类"
			+ ", 部署该Bean时指定的id为" + beanName);
	}
}

Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了BeanNameAware接口,Spring容器就会在创建该Bean之后,自动调用该Bean的setBeanName()方法,调用该方法时,会将Bean的配置id作为参数传给该方法——该方法的实现部分将Spring传入的参数(Bean的配置id)赋给该Chinese对象的beanName实例变量,因此接下来即可通过该beanName实例变量来访问容器本身。

下面写个实现的方法。

public class SpringTest
{
	public static void main(String[] args)
	{
		// 创建Spring容器,容器会自动预初始化所有Bean实例
		ApplicationContext ctx =
			new ClassPathXmlApplicationContext("beans.xml");
		Chinese chin = ctx.getBean("chinese" , Chinese.class);
		chin.info();
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值