zoukankan      html  css  js  c++  java
  • IOC 容器中添加组件的方式

    1、通过@CompentScan +@Controller @Service @Respository @compent

    适用场景: 针对我们自己写的组件可以通过该方式来进行加载到容器中。
     
    2、通过@Bean的方式来导入组件(适用于导入第三方组件的类)
     
    3、通过@Import来导入组件
    3.1、导入类
    @Configuration @Import(value = {Person.class, Car.class}) 
    public class MainConfig { }

    3.2、导入ImportSeletor类实现组件

    public class MyImportSelector implements ImportSelector { 
    //可以获取导入类的注解信息 
      @Override 
      public String[] selectImports(AnnotationMetadata importingClassMetadata) {
    return new String[]{"com.my.testimport.compent.Car"};
    }
    }

    @Configuration @Import(value
    = {Person.class, Car.class, MyImportSelector.class})
    public class MainConfig { }

    springboot的自动注入就是用了这种方式

    3.3、导入 ImportBeanDefinitionRegister类的实现组件

    public class MyBeanDefinitionRegister implements ImportBeanDefinitionRegistrar {
      @Override 
      public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        //创建一个bean定义对象 
        RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Cat.class); 
        //把bean定义对象导入到容器中 
        registry.registerBeanDefinition("cat",rootBeanDefinition); 
      } 
    }
    @Configuration 
    @Import(value = {Person.class, Car.class, MyImportSelector.class, MyBeanDefinitionRegister.class}) 
    public class MainConfig { }

    aop的实现注册类AutoProxyRegistrar就是实现了ImportBeanDefinitionRegister类

     4、通过实现FacotryBean接口来实现注册组件

    @Component
    public
    class CarFactoryBean implements FactoryBean<Car> { //返回bean的对象 @Override public Car getObject() throws Exception { return new Car(); } //返回bean的类型 @Override public Class<?> getObjectType() { return Car.class; } //是否为单利 @Override public boolean isSingleton() { return true; } }

     spring获取对象是返回的是getObject方法返回的对象,要想返回fanctoryBean对象,需要在获取对象名前加上&符号

    即 getBean("carFactoryBean" )返回car对象,

        getBean("&carFactoryBean" )返回CarFactoryBean 对象

  • 相关阅读:
    第一轮铁大树洞APP开发冲刺(3)
    记一次寒假小尝试心得体会
    小学四则运算口算练习app---No.7
    小学四则运算口算练习app---No.6
    小学四则运算口算练习app---No.5
    小学四则运算口算练习app---No.4
    小学四则运算口算练习app---No.3
    小学四则运算口算练习app---No.2
    小学四则运算口算练习app
    《需求工程--软件建模与分析》读书笔记03
  • 原文地址:https://www.cnblogs.com/pjfmeng/p/13947033.html
Copyright © 2011-2022 走看看