Spring底层原理之bean的加载方式三 用注解声明配置类 以及@Configuration 和 @Component 的区别

bean的加载方式三 用注解声明配置类

我们之前用组件扫描加上注解定义bean

实现了bean的加载

当我们又会发现这个配置文件过于繁琐

我们可以写一个类

不是配置文件而是配置类

我们接下来只需要把这句话的功能写到

配置类里面

这样书写就行

package com.bigdata1421.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;@ComponentScan({"com.bigdata1421.bean","com.bigdata1421.config"})
public class SpringConfig3 {}

启动类启动

package com.bigdata1421.bean.app;import com.bigdata1421.config.SpringConfig3;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App3 {public static void main(String[] args) {ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig3.class);String[] arr = ctx.getBeanDefinitionNames();for (String s : arr) {System.out.println(s);}}}

成功查看到了信息

@Configuration

@Configuration是 Spring Framework 中的一个注解,它用于指示该类是一个配置类,它的作用类似于传统的 XML 配置文件。具体来说,它的主要功能有以下几点:

  1. 定义配置类:使用 @Configuration 注解的类可以提供 bean 的定义和其他 Spring 配置的定义。

  2. 声明 Bean:在配置类中,可以使用 @Bean 注解声明 bean。这些 bean 将由 Spring 容器管理,并可以在应用程序中通过依赖注入来使用。

  3. 替代 XML 配置@Configuration 注解通常用来取代传统的 XML 配置文件,因为它提供了更加便捷和类型安全的配置方式。

  4. 组合注解@Configuration 注解经常与其他注解结合使用,例如 @ComponentScan@Import,以及 Spring Boot 中的 @SpringBootApplication

@Component

@Component 是 Spring Framework 中最基本的注解之一,用于表示一个类是 Spring 管理的组件。具体来说,@Component 通常用于将 Java 类标识为 Spring Bean,这些 Bean 可以由 Spring 容器进行实例化、管理和组装。

  1. 作为 Spring Bean 的标识

    • 当一个类使用 @Component 注解标注时,Spring 将会在运行时自动扫描并将其注册为一个 Bean。

    • 这意味着该类的实例可以由 Spring IoC 容器进行管理,包括依赖注入和生命周期管理等。

  2. 类的自动检测和注册

    • 通过组件扫描(component scanning),Spring 可以自动检测带有 @Component 注解的类,并将其实例化为 Bean。

    • 在典型的 Spring 应用程序中,可以通过配置 @ComponentScan 注解来指定扫描的包路径,从而告诉 Spring 在哪里寻找和注册组件。

  3. 与其他注解的关系

    @Component

    注解是一个通用的组件配置,它的派生注解有更具体的用途和语义,例如:

    • @Controller:用于标识控制器类。

    • @Service:用于标识服务层(service layer)类。

    • @Repository:用于标识数据访问层(repository layer)类。

    • 这些派生注解除了表明类的职责外,还会影响 Spring 在某些情况下的行为,例如异常处理和事务管理。

  4. 简化配置

    • 使用 @Component 及其派生注解可以大大简化 Spring 应用程序的配置文件,尤其是替代传统的 XML 配置文件方式。

区别

  1. 目的和作用

    • @Component:用于标识一个普通的 Spring Bean,主要用于组件扫描和自动装配。

    • @Configuration:用于定义一个配置类,包含 Bean 定义和其他应用配置,通常作为配置文件的替代方案。

  2. 方式

    • @Component:类本身被标记为一个组件,由 Spring 自动扫描和注册为 Bean。

    • @Configuration:类中的方法被标记为 @Bean,这些方法返回的对象被注册为 Spring Bean。

  3. 结构

    • @Component:直接应用于类,表示该类本身是一个组件。

    • @Configuration:应用于类,表示该类包含一个或多个 @Bean 方法,这些方法定义了要被 Spring 容器管理的 Bean。

小结

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/360873.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基于ssm+jsp 足球赛会管理系统

1前台首页功能模块 足球赛会管理系统,在系统首页可以查看首页、球队介绍、球星介绍、线下足球赛、论坛信息、个人中心、后台管理、在线客服等内容,如图1所示。 图1前台首页功能界面图 用户登录、用户注册,在注册页面可以填写账号、密码、姓名…

【大数据技术原理与应用(概念、存储、处理、分析与应用)】第2章-大数据处理架构 Hadoop习题与知识回顾

文章目录 单选题多选题知识点回顾什么是Hadoop?Hadoop有哪些特性?Hadoop生态系统是怎么样的?(1) HDFS(2) HBase(3) MapReduce(4) Hive(5) Pig(6) Mahout(7) Zookeeper(8) Flume(9) Sqoop(10) Ambari 单选题 1、下列哪个不属于Hadoop的特性&am…

项目实训-vue(八)

项目实训-vue(八) 文章目录 项目实训-vue(八)1.概述2.医院动态图像轮播3.页面背景板4.总结 1.概述 除了系统首页的轮播图展示之外,还需要在医院的首页展示医院动态部分的信息,展示医院动态是为了确保患者、…

C# 利用XejeN框架源码,编写一个在 Winform 界面上的语法高亮的编辑器,使用 Monaco 编辑器

析锦基于Monaco技术实现的Winform语法高亮编辑器 winform中,我们有时需要高亮显示基于某种语言的语法编辑器。 目前比较强大且UI现代化的,无疑是宇宙最强IDE的兄弟:VS Code。 类似 VS Code 的体验,可以考虑使用 Monaco Editor&a…

【Oracle篇】逻辑备份工具expdp(exp)/impdp(imp)和物理备份工具rman的区别和各自的使用场景总汇(第八篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

数据资产安全保卫战:构建多层次、全方位的数据安全防护体系,守护企业核心数据资产安全

一、引言 在信息化时代,数据资产已成为企业运营的核心,其安全性直接关系到企业的生存与发展。然而,随着网络技术的飞速发展,数据泄露、黑客攻击等安全威胁日益增多,给企业的数据资产安全带来了严峻挑战。因此&#xf…

RabbitMQ的WorkQueues模型

WorkQueues模型 Work queues,任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。 当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,…

ICMAN液位检测——WS003B管道检测模组

ICMAN液位检测之WS003B管道检测模组 体积小,成本低, 液位检测精度高, 有水输出低电平无水高电平, 适用于饮水机、咖啡机、扫地机器人、洗地机等, 有需要朋友快联系我吧! AWE展会不容错过的ICMAN检测模组…

量化系统----开源简化版qmt实盘交易系统,提供源代码

量化系统----开源简化版qmt实盘交易系统,提供源代码 https://mp.weixin.qq.com/s/qeqH8XtUeoDjIJIXMe5D-w 最近有读者反应开源的qmt_trader内容太多了不知道怎么样使用,我独立了一个简单板块的easy_qmt_tarder方面大家的使用 qmt_tarder开源下载 量化系…

ansible 模块进阶及变量

yum 模块进阶 - name: install pkgs hosts: webservers tasks: - name: install web pkgs # 此任务通过yum安装三个包 yum: name: httpd,php,php-mysqlnd state: present # 根据功能等,可以将一系列软件放到一个组中,安装软件包组,将会把很…

【C++题解】1712. 输出满足条件的整数2

问题:1712. 输出满足条件的整数2 类型:简单循环 题目描述: 有这样的三位数,其百位、十位、个位的数字之和为偶数,且百位大于十位,十位大于个位,请输出满所有满足条件的整数。 输入&#xff1…

k8s部署mongodb副本集

1.什么mongodb? MongoDB 是一个基于分布式文件存储的数据库,由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富&#xff…

【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!

随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找功能强大、易于使用的办公软件。在这个背景下,ONLYOFFICE 8.1应运而生,成为许多用户的新选择。ONLYOFFICE 8.1是一款办公套件软件,提供文档处理、电子表格和幻灯片制作…

机器学习/pytorch笔记:time2vec

1 概念部分 对于给定的标量时间概念 t,Time2Vec 的表示 t2v(t)是一个大小为 k1的向量,定义如下: 其中,t2v(t)[i]是 t2v(t)的第 i 个元素,F是一个周期性激活函数,ω和 ϕ是可学习的参数。 以下是个人理解&am…

计算机视觉——opencv快速入门(一) opencv的介绍与安装

什么是opencv OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它旨在提供广泛的图像和视频处理功能,支持多种编程语言(主要包括C, Python, Java等)和操作系统(如Li…

FANUC喷涂机器人P-350iA电机过热维修解决方案

发那科喷涂机器人作为自动化喷涂生产线的重要组成部分,其性能稳定性和可靠性对于生产效率和产品质量具有重要影响。然而,在实际使用过程中,FANUC喷涂机器人P-350iA电机过热故障问题往往成为影响其正常运行的主要因素之一。 FANUC机器人M-100…

数据结构-顺序表的交换排序

顺序表的初始化 const int M 505;typedef struct{int key; //关键元素int others; //其他元素 }info;typedef struct{info r[M1]; int length(); //表长 }SeqList,*PSeqList; 冒泡排序 分析: 顺序表的冒泡排序和数组的冒泡排序的…

欧盟指控苹果应用商店规则非法压制竞争,面临巨额罚款风险

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

[数据集][目标检测]鸡蛋缺陷检测数据集VOC+YOLO格式2918张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2918 标注数量(xml文件个数):2918 标注数量(txt文件个数):2918 标注…

24/06/25(4.1122)数据存储,自定义类型

重点:1.数据类型详细介绍 2.整型在内存中的存储:原码 反码 补码 3.大小端字节序介绍和判断 4.浮点型在内存中的存储解析 前面都有char short int...详细介绍,翻一翻.需要注意的是,C语言没有字符串类型哦. 计算机永远存储的都是补码,计算也是用补码进行的,只有在要输出的时候转…