BeanNameAware和BeanFactoryAware
1.BeanNameAware和BeanFactoryAware概念
BeanNameAware:实现该接口的Bean能够在初始化时知道自己在BeanFactory中对应的名字。
BeanFactoryAware:实现该接口的Bean能够在初始化时知道自己所在的BeanFactory的名字。
2.继续前面文章的分析,看这一段源码:
initializeBean方法,前面的文章已经分析过了,上图中的applyBeanPostProcessorsBeforeInitialization也分析了。 这个invokeAwareMethods就是对继承Aware接口的Bean进行初始化,再看下图:
也就是说继承BeanNameAware接口的会获得Bean名称,继承BeanFactoryAware接口的会获得BeanFactory名称。
3.在App.java中继承上述两个接口,并且打印相关信息:
package com.mycompany.app;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
public class App implements InitializingBean,FactoryBean<Object>,BeanNameAware,BeanFactoryAware
{
private App(){
System.out.println("App.App()");
}
private String says="App";
public String getSays() {
return says;
}
public void setSays(String says) {