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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全球社交的连接者:Facebook的跨文化影响力

在当今高度数字化和全球化的时代,社交网络不仅仅是人们交流和连接的工具,更成为促进全球文化交流和理解的重要平台。作为全球最大的社交网络之一,Facebook不仅连接了数十亿用户,还在跨文化交流和社会互动方面发挥着重要作用。本文…

【遇到的问题】集群上查看gpu的使用情况

流程: 查看bme_cpu所有节点的详细情况scontrol show node bme_gpu[12-23] 下面这个看起来分配出去较少 查看bme_cpu空闲节点sinfo -p bme_gpu -o "%n %G %C %m %e NVIDIAA10080GBPCIe 卡 gpu 13看起来最少 在命令中选择这个节点 #!/bin/bash #SBATCH -J rati…

山洪灾害无线预警广播系统解决方案

一、国家政策 2021年水利部印发了《全国山洪灾害防治项目实施方案(2021-2023年)》,提出“到2023年,山洪灾害防治体系进一步健全,监测预警能力进一步提升,努力补齐山洪灾害防治当前存在的明显短板”的建设目…

思科交换机基本配置命令

01进入特权模式enable switch>enable switch# 02进入全局配置模式configure terminal switch>enable switch#configure terminal switch(conf)# 03交换机命名hostname aptech2950以aptech2950为例 switch>enable switch#configure terminal switch(conf)#hostname apt…

创建App

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Django项目中,推荐使用App来完成不同模块的任务,通过执行如下命令可以启用一个应用程序。 python manage.py startapp app…

allegro 如何替换过孔?

操作步骤如下 1.选择操作对象(需要替换的过孔),右键–>Repace……–>Selected…… 2.在弹出的窗口中选择最终需要的过孔既可以

怎么用表单二维码来收集信息?二维码收集信息的制作教程

现在通过二维码来收集用户信息的方式在很多场景中都有应用,随着毕业季的到来学校也开始用这种方式来收集学生的个人信息,学生只需要扫描生成二维码,根据问题填写对应的内容,将数据统计到专门的后台中存储,实现数据的快…

k8s设置pod资源请求和限制

设置资源请求和限制 实验目标: 学习如何为 Pod 设置资源请求和限制,以优化集群资源分配。 实验步骤: 创建一个 Deployment,并设置 CPU 和内存的资源请求和限制。使用 kubectl describe 命令查看资源分配情况。观察资源限制对 P…

IMU应用于颈部健康监测

随着电脑成为日常工作的必备工具,长时间使用电脑导致的颈部疼痛问题日益受到关注。近日,一项创新研究利用IMU开发了一种新型监测系统,用来监测电脑使用者的颈部姿势和疼痛情况。 在为期两天的实验中,8名办公室工作者分别在静态和…

详细介绍iutils.dll丢失的多个解决方法,一键快速修复丢失的iutils.dll文件

当用户遭遇“iutils.dll缺失”的提示时,这通常预示着依赖该库文件的程序将面临启动失败或功能受限的风险。DLL(Dynamic Link Library,动态链接库)文件无疑占据了核心地位。这些文件就如同建筑师手中的蓝图,为软件的构建…

Linux内核测试技术

Linux 内核是Linux操作系统的核心部分,负责管理硬件资源和提供系统调用接口。随着 Linux 内核的不断发展和更新,其复杂性和代码规模也在不断增加。因此,确保内核的稳定性和可靠性变得尤为重要。内核测试技术是实现这一目标的关键手段。本文将…

数据库管理工具Navicat v17全新发布——释放全新的建模能力

Navicat是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 接下来我们将为大家介绍Navicat v17中的一些主要亮点,其释放的全新建模能力、最大化数据可见…

厄瓜多尔海外媒体发稿:大舍传媒-媒体宣发投放需要什么条件?

一、厄瓜多尔媒体 厄瓜多尔媒体有: EcuapaginasEcuapuntoViviendaya 这些媒体都是厄瓜多尔当地颇具影响力的新闻**和社交媒体平台,为广告主和品牌提供了一个广阔的宣传空间。 二、大舍传媒介绍 大舍传媒是一家专业的海外媒体宣发投放,致…

Linux的免交互

交互:我们发出指令控制程序的运行,程序在接收到指令之后按照指令的效果做出对应的反应。 免交互:间接的通过第三方的方式把指令传送给程序,不用直接的下达指令。 1、here document免交互 ere document免交互:是命令…

如何绘制网络安全运营的“谷歌地图”?

正如Google Maps(谷歌地图)彻底改变了驾车出行时的导航模式一样,通过流程映射绘制一张指导网络安全运营的“电子地图”,可以彻底改变组织理解和管理网络安全运营工作的方式。 现代企业网络安全运营的核心并不是部署防火墙和杀毒软…

浅析MySQL-基础02

目录 MySQL一行记录是怎么存储的? MySQL的数据存放在哪? 表空间文件的结构是怎么样的? InnoDB行格式有哪些? Compact行格式是啥样的? 记录的额外信息 1、变长字段长度列表 2、NULL值列表 3、记录头信息 记录…

【AI大模型】ChatTTS——颠覆传统,赋能未来的文本到语音技术

文章目录 一、项目介绍二、代码解释三、从技术角度进行分析四、技术细节与实现五、优缺点分析六、应用场景分析七、未来展望八、结论 一、项目介绍 随着人工智能技术的不断进步,语音合成(TTS)技术得到了飞速发展。ChatTTS项目作为一个开源的…

分享一个好用的图幅号计算器

如果在你的工作中会分幅处理地图数据,也许这个好用的图幅号计算器能对你有所帮助。 你只需要在该工具中输入经纬度坐标,就可以为你计算出各个比例尺下的图幅号,你可以在文末查看该工具的领取方法。 一个好用的图幅号计算器 该图幅计算器工…

关于无人机——你知道有哪些种类?

随着无人机相关技术的飞速发展,无人机的种类也越来越多。也正由于无人机的多样性,从不同的角度考量会有不同的分类方法: 按照飞行平台构型分类,无人机可分为固定翼无人机、旋翼无人机、无人飞艇、伞翼无人机、扑翼无人机等。 按…

linux用户使用资源限制

linux用户使用资源限制 1. 概述2. 特殊权限(SUID,SGID,SBIT)3. 访问控制列表(ACL)4. 磁盘空间限制(quota)5. 进程资源限制5.1 ulimit5.2 cgroup 前言:linux是一个遵循POSIX的多用户、多任务、支…