美文网首页
IoC添加组件的方式和使用场景

IoC添加组件的方式和使用场景

作者: 远去的桅杆_ | 来源:发表于2020-09-06 18:52 被阅读0次

① 使用@Bean

第一种是我们平时使用最多的,主要用于项目内部的组件的注入

② 使用@ComponentScan + @Controller/@Service/@Component/Repository

这种主要用于controller,service,dao等层次分明的场景

③ 使用@Impport/实现ImportSelector

适用于导入外部,第三方组件
有两种实现方式:

  1. 直接导入
@Import(value = {Bus.class})

2.实现ImportSelector

@Configuration
@Import(value = { MyImportSelector.class})
public class InitBean {

    @Resource
    private Car car;

}
public class MyImportSelector implements ImportSelector {

    @Override
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        return new String[]{"com.caril.learn.initBean.Car"};
    }
}

④ 实现ImportBeanDefinitionRegistrar 动态注册

ImportBeanDefinitionRegistrar 可以比较灵活的实现Bean定义信息的注册,实际上我们在使用的时候都是通过实现该接口来达到按照指定条件注册bean定义信息,来达到注入对应的Bean到IOC容器的目的,可以灵活的按照自己的逻辑注册,且可以通过注解来开启对应的功能
比如:SpringCloud框架的FeignClientsRegistrar类也实现了ImportBeanDefinitionRegistrar

public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
        RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Trunk.class);
        registry.registerBeanDefinition("trunk", rootBeanDefinition);
    }
}
@Import(value = {MyImportBeanDefinitionRegistrar.class})
public class InitBean {

    @Resource
    private Trunk trunk;

}

相关文章

  • IoC添加组件的方式和使用场景

    ① 使用@Bean 第一种是我们平时使用最多的,主要用于项目内部的组件的注入 ② 使用@ComponentScan...

  • Spring 使用 @Import 的好处是啥?

    Spring 往 IOC 中添加组件的方式,你知道几种呢? 可能你只知道 @ComponentScan + @Co...

  • Spring源码学习⑥-IOC小结

    IOC容器涉及的知识点: 1、组件添加 ①、@ComponetScan ②、@Bean ③、@Configur...

  • CocoaPod 私有库的使用方式

    创建及配置方式 到远程仓库创建工程 查看本地索引库 添加私有索引库 创建组件库 使用组件库模板创建 添加组件内容 ...

  • Spring学习笔记 | 详解bean的配置(一)

    IOC和DI概述 IOC其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源。作为回应,容...

  • IoC:组件注册方式

    @Bean + @Scope + @Lazy 定义在方法上,方法名称就是注入的对象名称,方法的返回值就是注入对象的...

  • 组件自定义事件

    一种组件间的通信方式,适用于:子组件 ===> 父组件 使用场景:A 是父组件,B 是子组件,B 想给 A 传数据...

  • Flutter组件Container的属性讲解

    一、使用场景 设置宽高:flutter中大部分组件不能设置宽高,需要依赖容器。 添加背景颜色 添加背影图像 添加内...

  • 九、使用注解实现IOC的配置

    一、本课目标 掌握使用注解实现IOC的方法 二、使用注解实现IOC 2.1准备工作 注解方式将Bean的定义信息和...

  • 21.Vue组件的自定义事件

    一种组件间通信的方式,适用于:子组件 ===> 父组件 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要...

网友评论

      本文标题:IoC添加组件的方式和使用场景

      本文链接:https://www.haomeiwen.com/subject/qkocektx.html