假设的两个类:
第一个
package biz.baijing.definition;
import ...
@Configuration
public class BaiJingConfig {
@Bean // ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition
public String bjConf() {
return "Baijing Configuration";
}
}
第二个
package biz.baijing.definition;
import ...
@Component // ScannedGenericBeanDefinition
public class BaiJing {
}
演示的结果
package biz.baijing;
import ...
@SpringBootApplication
public class BizBaiJingApplication
{
public static void main( String[] args )
{
ConfigurableApplicationContext run = SpringApplication.run(BizBaiJingApplication.class, args);
// 获取 BeanDefinition 对象
ConfigurableListableBeanFactory beanFactory = run.getBeanFactory();
//class org.springframework.context.annotation.ScannedGenericBeanDefinition
BeanDefinition baiJing = beanFactory.getBeanDefinition("baiJing");
//class org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition
BeanDefinition bjConf = beanFactory.getBeanDefinition("bjConf");
System.out.println(baiJing.getClass());
System.out.println(bjConf.getClass());
}
}
@Bean
ScannedGenericBeanDefinition
@Componet
@Service
@Controller
……
ConfigurationClassBeanDefinition