Spring获取Bean的自身id

2018-03-21 21:52:18
3017次阅读
0个评论
在某些情况下,业务要求程序员在开发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();  
    }  
}



收藏00

登录 后评论。没有帐号? 注册 一个。