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

适用场景: 针对我们自己写的组件可以通过该方式来进行加载到容器中。

通过@Bean的方式来导入组件(适用于导入第三方组件的类)

通过@Import来导入组件 (导入组件的id为全类名路径)

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

通过@Import 的ImportSeletor类实现组件的导入 (导入组件的id为全类名路径)

public class CustomImportSelector implements ImportSelector {/可以获取导入类的注解信息@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{"com.Custom.testimport.compent.Dog"};}
}
@Configuration
@Import(value = {Person.class, Car.class, CustomImportSelector.class})
public class MainConfig {}

通过@Import的 ImportBeanDefinitionRegister导入组件 (可以指定bean的名称)

public class CustomBeanDefinitionRegister implements ImportBeanDefinitionRegistrar {@Overridepublic 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})
//@Import(value = {Person.class, Car.class, CustomImportSelector.class})
@Import(value = {Person.class, Car.class, CustomImportSelector.class, CustomBeanDefinitionRegister.class})
public class MainConfig {}

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

package com.leon.testfactorybean;import org.springframework.beans.factory.FactoryBean;/*** 通过实现factoryBean接口往容器中注册组件 */
public class CarFactoryBean implements FactoryBean<Car> {@Overridepublic Car getObject() throws Exception {return new Car();}@Overridepublic Class<?> getObjectType() {return Car.class;}@Overridepublic boolean isSingleton() {return false;}
}
package com.leon.testfactorybean;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class MainClass {public static void main(String[] args) throws Exception {AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);Object bean = ctx.getBean("carFactoryBean");System.out.println(bean);/* Object bean2 = ctx.getBean("&carFactoryBean");System.out.println(bean2);*/}
}

往IOC 容器中添加组件的方式相关推荐

  1. 六、spring之通过FactoryBean为ioc容器中添加组件

    前面我们已经介绍了几种为容器中添加组件的方法,今天一起学习通过FactoryBean添加组件的方法. 首先我们准备一个类,也就是我们需要注册进spring的ioc容器中的类 类Color: // 不必 ...

  2. Spring5 - 向IOC容器中添加组件的4种方式

    文章目录 概述 方式一: @CompentScan 适用场景 Code 方式二: @Bean 适用场景 Code 方式三: @Import 适用场景 Code Demo1 Code Demo2 + 实 ...

  3. Lumen开发:如何向 IoC 容器中添加自己定义的类

    版权声明:本文为博主原创文章,未经博主允许不得转载. 先在起始文件bootstrap/app.php加上$app->register(App\Providers\User\UserService ...

  4. 往JScrollPane中添加组件时滚动条不出现的解决方法

    往滚动条容器里添加容器,再往容器中添加组件,,当组件的大小超过滚动条的大小时,滚动条还不显现的解决办法. 滚动条容器,,在NEW的时候只能传一个容器进去..并且这个容器(zPanel)不需要设置大小. ...

  5. JScrollPane中添加组件时滚动条不出现或添加组件显示不全解决方案

    问题: 往滚动条容器里添加容器,再往容器中添加组件,当组件的大小超过滚动条的大小时,滚动条还不显现的解决办法.滚动条容器,在NEW的时候只能传一个容器进去.并且这个容器(zPanel)不需要设置大小. ...

  6. spring注解开发:容器中注册组件方式

    1.包扫描+组件标注注解 使用到的注解如下,主要针对自己写的类 @Controller @Service @Repository @Component @ComponentScan 参考 spring ...

  7. java se 动态添加视图组件_博为峰Java技术题 ——JavaSE Java Swing在顶层容器中添加菜单栏Ⅰ...

    下面将讲述如何在顶层容器中添加菜单栏.下面将通过编写一段Swing程序代码来讲解如何在顶层容器中添加菜单栏.其代码如下: publicclassBWFSwingMenu { staticintwidt ...

  8. Spring容器中导入组件方式

    1.  componentscan包扫描+组件注解(@controller @service @ component ) 2.  在方法上添加@Bean    id默认为方法名 3.  @import ...

  9. 将Bean放入Spring容器中的五种方式

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/weixin_43741092/ article/details/120176466 将bean放 ...

最新文章

  1. java 投票算法_Boyer and Moore Fast majority vote algorithm(快速选举算法)
  2. JQuery DataTable的配置项及事件
  3. Leetcode每日一题:116.populating-next-right-pointers-in-each-node(填充每个节点的下一个右侧节点指针)
  4. 2种造成sqlserver自增列不连续的原因
  5. ReSharper卸载后Visual Studio的快捷键和智能提示消失
  6. weblogic 下载和安装
  7. 数据结构与算法笔记 二叉树、二叉搜索树、二叉平衡树的区分与关系
  8. 好用的小巧的免费功能强大的电脑截图软件Snipaste下载安装
  9. 【《机器学习》周志华学习笔记2.3.4】~模型评估与选择-代价敏感错误率与代价曲线
  10. 华为云HMS Core 助力鸿蒙开发
  11. GNS3 2.1.21详细安装教程
  12. 关于csgo的观看录像fps低_《CSGO》FPS低解决办法
  13. 基于MATLAB的人脸识别提纲
  14. 学习人工智能必读这30本书!
  15. ios 绕过 id 锁
  16. 音视频开发为什么要学SRS流媒体服务器
  17. bugku web18 秋名山车神
  18. python自动化办公书籍_2020年最新 Python自动化办公(资料完整)
  19. VS--无法迁移解决方案文件(解决办法)
  20. B2C购物商城系统定制优势_购物商城系统适用在哪?

热门文章

  1. 习题3-11 Kickdown UVA - 1588
  2. HashMap是如何实现快速存取的
  3. ijcai statistics
  4. 承载(Host)通用语言执行时
  5. C# winfrom打印技术初探
  6. 自写网站入门阶段之一:熟悉各种标签的运用
  7. ---WebCam网络摄像头9 usb dirver
  8. GridView 序号 排序 正序 倒序
  9. 关于“VCL已死、RAD已死”答读者问
  10. [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由