12.把Bean对象加入到spring容器的方法

把Bean加入到springIoC容器

  1. xml文件配置时就写即可

  2. 注解形式注入(全部在@Congiration主配置类中设置)

    1. 如果是三层组件:则配置扫描器注解扫描 + 三层对应的注解(或者@Component,不推荐,一般最好指明)

    2. 非三层组件:

      1. 配置类中写方法,上边打@Bean+返回值

      2. @import注解打在主配置类上指明bean类:@Import({Apple.class,Banana.class})

        • 直接编写到@Import中,并且bean的id值是全类名

        • 自定义ImportSelector接口的实现类,通过selectimports方法实现(方法的返回值就是要纳入IoC容器的Bean),并且告知程序自己编写的实现类@Import({Orange.class,MyImportSelector.class})

          此方式可以和方式一共用(再添加返回值没有的)

        public class MyImportSelector implements ImportSelector {
            @Override
            public String[] selectImports(AnnotationMetadata importingClassMetadata) {
                return new String[
                    {"com.yanqun.entity.Apple","com.yanqun.entity.Banana"};
                    //返回值就是 要加入IOC容器的Bean的全类名
            }
        }
        
        • 编写ImportBeanDefinitionRegistrar接口的实现类,重写方法@Import({Orange.class,MyImportSelector.class,ImportBeanDefinitionRegistrar.class})
        public class MyImportBeanDefinitionRegistrar implements
            ImportBeanDefinitionRegistrar {
            @Override
            public void registerBeanDefinitions(AnnotationMetadata
                                                importingClassMetadata,
                                                BeanDefinitionRegistry registry) {
                //"com.yanqun.entity.Orange"
                //BeanDefinition bd = new RootBeanDefinition(Orange.class) ;
                BeanDefinition beanDefinition =  new
                    RootBeanDefinition("com.yanqun.entity.Orange") ;
                registry.registerBeanDefinition("myorange", beanDefinition ); 
                // id ,class
            }
        }
        
      3. FactoryBean(工厂Bean)

        • 准备bean,实现类和重写方法
        • 注册bean,注册到@Bean中(通过@bean在主配置类中注册)
        • 注意:需要通过&区分获取的对象是哪一个
          • 不加&,获取的是最内部真实的Apple
          • 如果加了&,获取的 是FacotryBean
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值