随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

 

 

创建一个实现类:

package cn.cdulm.bean;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.stereotype.Component;

@Component
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); // Bean的定义
        beanDefinition.setBeanClass(Wife.class);    // 向Bean定义中添加一个类的class以注册为Bean
        registry.registerBeanDefinition("wife",beanDefinition);   // 向图纸中添加Bean定义让spring使用该图纸创建Bean定义中的类
    }
}

在javaConfig配置类中引入:

 

 测试方法:

     @Test
    public void f4(){
        Wife bean = ioc.getBean(Wife.class);
        Wife bean1 = (Wife) ioc.getBean("wife");
        System.out.println("Wife - " + bean);
        System.out.println("Wife1 - " + bean1);
        System.out.println("Wife - " + bean.getName());
        System.out.println("Wife1 - " + bean1.getName());
    }

测试方法中可以发现这种方式可以通过前面设置的名称来获取Bean实例。

输出结果:

Wife - cn.cdulm.bean.Wife@4c402120
Wife1 - cn.cdulm.bean.Wife@4c402120
Wife - 老王吧
Wife1 - 老王吧 

 没有问题。

 

posted on 2022-05-31 11:21  时间完全不够用啊  阅读(182)  评论(0编辑  收藏  举报