Spring扫描的时候,一个类是怎么变成BeanDefinition的呢?
就是通过BeanDefintion的实现类 的构造方法实现的,然后将这个BeanDefinition通过registry.registerBeanDefinition方法注入到BeanFactory的Map中
比如
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Student.class);
registry.registerBeanDefinition("Student", rootBeanDefinition);
FactoryBean
这个东西是一个接口,他的实现类必须要加一个@Component注解,所以它本身就是一个bean,只不过这个bean可以产生bean,因为这个实现类必须要重写一个getObject方法,而这个getObject方法的返回值是返回一个对象,这个对象如果是单例的话,就会交给spring去管理,放到spring容器中! 所以说一共有两个bean,一个是这个实现类本身的bean,一个是getObject的返回值对象的bean
beanFactory
这是一个工厂,用来产生bean的,它本身是一个工厂,并不是一个bean,
beanFactory是Spring当中的一个工厂,它能够去获取bean,比如我们有一个对象交给Spring管理,我们可以通过beanFactory的getbean方法把它获取出来
初始化Spring环境
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext();
context.register(Appconfig.class); // 这种可以完成单个类的实例化
context.refresh();
public class SpringTest01 {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext();
context.register(Appconfig.class); // 这种可以完成单个类的实例化
context.scan("com.itheima"