【Spring】17 @Component 注解

文章目录

    • 1. 定义
    • 2. 好处
    • 3. 示例代码
    • 4. 组件命名
    • 总结

在 Spring 框架中, @Component 注解是一个 通用的注解,用于标识一个类为 Spring 容器管理的 组件。它就可以让这个类成为 Spring IoC 容器中的一个 Bean,并允许 通过扫描机制自动发现和注册

1. 定义

@Component 是 Spring 框架的核心注解之一,用于将一个类标记为 Spring 组件。这就意味着 Spring 容器将负责实例化、配置和管理这个类的对象。

@Component
public class DemoComponent {public String printDemoComponent() {return "你好 Component!";}
}

2. 好处

  • 自动扫描与注册:

    @Component 注解使得 Spring 能够自动扫描项目中的组件,并注册它们到容器中,无需手动配置

  • 松散耦合:

    通过使用 @Component,类之间的依赖关系由 Spring 容器管理,使得应用程序更加松散耦合,易于维护和扩展

  • 更好的组织结构:

    将应用程序划分为独立的组件,有助于更好地组织和维护代码

3. 示例代码

让我们通过一个简单的示例来说明 @Component 的使用。假设我们有一个简单的服务类 DemoComponent

package com.cheney.demo.component;import org.springframework.stereotype.Component;@Component
public class DemoComponent {public String printDemoComponent() {return "你好 Component!";}
}

现在,我们的 DemoComponent 类被标记为一个 Spring 组件。可以在其他组件中通过自动装配的方式使用它:

package com.cheney.demo.controller;import com.cheney.demo.component.DemoComponent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("demo")
public class DemoController {@Autowiredprivate DemoComponent demoComponent;@GetMappingprivate String doDemo(){return demoComponent.printDemoComponent();}
}

在这个例子中,DemoController 类通过 @Autowired 注解将 DemoComponent 注入到其中。Spring 容器会自动处理依赖关系,确保 DemoComponent 的实例在需要时正确创建和注入。

然后,我们启动服务

在这里插入图片描述

最后,访问 URL 验证一下

在这里插入图片描述

4. 组件命名

虽然 @Component 注解可以简化很多配置,但它默认使用类名的首字母小写作为组件的名称。如果希望显式指定组件的名称,可以使用 valuename 属性:

@Component(value = "customName")
public class DemoComponent {public String printDemoComponent() {return "你好 Component!";}
}

或者

@Component("customName")
public class DemoComponent {public String printDemoComponent() {return "你好 Component!";}
}

总结

通过 @Component 注解,Spring 提供了一种简便的方式来将类注册为组件,使得应用程序更易于开发和维护。希望本文可以帮助你知道 @Component 注解是什么以及理解和使用它,详细的注解使用说明请查阅官方文档。

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

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

相关文章

玩转Mysql 五(MySQL索引)

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。如有侵权,请留言,我及时删除! 一、索引的数据结构 1、MySQL官方对索引的定义为:索引(Index)是…

Python2048小游戏核心算法(python系列26)

前言:做核心算法之前我们可以玩一玩这个小游戏来了解一下规则。2048在线试玩 运行效果: 代码案例: # 2048小游戏# 1.将列表中零移动到列表的末尾 def move_zeroes():x 0for i in range(len(list_nums)):if list_nums[i] ! 0:list_nums[x],…

“单项突出”的赢双科技IPO加速,比亚迪是最强助力?

近日,新能源汽车核心部件供应商赢双科技首次递表科创板,其凭借旋转变压器产品就坐稳了新能源车企主要供应商的地位,从核心业务及业绩情况来看,赢双科技不愧为“单项冠军”。 据悉,赢双科技本次IPO拟募资8.47亿元&…

两种MinIO分布式集群部署方式

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 相关文章推荐: 对象存储MinIO的简介与部署 记录一次跨越16个月的minio版本升级与数据迁移 MinIO集群怎么接入Prometh…

文字识别与光学字符识别有什么区别?

随着科技的不断发展,文字识别和光学字符识别技术已经成为我们日常生活和工作中不可或缺的一部分。然而,许多人对于这两者之间的区别并不十分清楚。本文将详细探讨文字识别与光学字符识别之间的差异,以帮助读者更好地理解这两种技术。 文字识…

Unity组件开发--相机跟随角色和旋转

1.相机跟随组件,节点: 2.相机跟随组件脚本: using System; using System.Collections; using System.Collections.Generic; using Unity.Burst.Intrinsics; using UnityEngine; using UnityEngine.UI;public class CameraFollow : Singleton&…

apk反编译修改教程系列---修改apk包名等信息 让一个应用拥有无限分身 手机电脑同步演示【九】

往期教程: apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…

Rust 常用集合(上)

目录 1、使用 Vector 储存列表 1.1 新建 vector 1.2 更新 vector 1.3 读取 vector 的元素 1.4 遍历 vector 中的元素 1.5 使用枚举来储存多种类型 1.6 丢弃 vector 时也会丢弃其所有元素 2、使用字符串储存 UTF-8 编码的文本 2.1 什么是字符串? 2.2 新建字…

联邦机构如何利用人工智能加速 IT 系统现代化

尽管行业压力巨大,许多公共部门组织仍然需要依赖已有数十年历史的遗留 IT 系统,这些系统可能会增加安全风险和成本,导致人员短缺,并减缓开发团队交付关键任务应用程序的速度。 与此同时,考虑到这些大型系统中内存不安…

设计模式的艺术P1基础—2.3 类之间的关系

设计模式的艺术P1基础—2.3 类之间的关系 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系。对于不同类型的关系,UML提供了不同的表示方式 1.关联关系 关联(Association)关系是类与类之间最常用…

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器,在一个pod当中…

异常处理:全面覆盖与精细化管理的平衡

异常处理:全面覆盖与精细化管理的平衡 在软件开发中,异常处理是保证系统稳定性和用户体验的重要环节。对于是否应当全面覆盖所有异常并设立兜底机制,业界存在着两种主流思路:全面覆盖原则和精细化处理。如何在这两者间取得平衡&a…

1.框架介绍项目环境配置与项目启动!

目录 1.框架开发方向:2.项目启动与环境搭建 1.框架开发方向: 1.前后端分离项目 2.纯后端项目 3.移动端开发uni-app(ios、Android、H5、微信小程序) 4.内容管理系统2.项目启动与环境搭建 1.安装node.js 下载地址可以用nvm安装 便于运行前端项目https://blog.csdn.net/qq_58647…

webpack的性能优化(一)——分包优化

1.什么是分包?为什么要分包? 默认情况下,Webpack 会将所有代码构建成一个单独的包,这在小型项目通常不会有明显的性能问题,但伴随着项目的推进,包体积逐步增长可能会导致应用的响应耗时越来越长。归根结底这…

led恒流式驱动电源芯片一览表

LED恒流式驱动电源芯片是一种用于驱动LED灯的关键组件。它能够稳定地提供恒定的电流,确保LED灯的亮度和颜色始终保持一致。 LED恒流式驱动电源芯片通常由电源管理单元、恒流输出部分和保护电路组成。电源管理单元负责转换输入电压为恒定的直流电压,并通…

App Crawler

Google官方出了一款App遍历工具App Crawler。 文档:应用抓取工具 | Android 开发者 | Android Developers App Crawler工具是Android Jetpack的一部分,它可自动的运行你的App,不需要编写或维护任何代码。 通过App Crawler运行App&…

数字后端设计实现之自动化useful skew技术(Concurrent Clock Data)

在数字IC后端设计实现过程中,我们一直强调做时钟树综合要把clock skew做到最小。原因是clock skew的存在对整体设计的timing是不利的。 但是具体到某些timing path,可能它的local clock skew对timing是有帮助的,比如如下图所示。 第一级FF到第…

简单易懂的PyTorch激活函数大全详解

目录 torch.nn子模块Non-linear Activations nn.ELU 主要特点与注意事项 使用方法与技巧 示例代码 图示 nn.Hardshrink Hardshrink函数定义 参数 形状 示例代码 图示 nn.Hardsigmoid Hardsigmoid函数定义 参数 形状 示例代码 图示 nn.Hardtanh HardTanh函数…

windows系统升级

问题 windows系统升级 详细问题 笔者手边有台电脑,操作系统版本为windowsXP,现需要升级至windows较新版本 解决方案 1、 内容备份 若C盘有重要数据文件 ,对于C盘(重要数据文件)进行备份 2、下载软件天猫一键重装…

【数据结构】数据结构中应用题大全(完结)

自己在学习过程中总结了DS中几乎所有的应用题,可以用于速通期末考/考研/各种考试。很多方法来源于B站大佬,底层原理本文不做过多介绍,建议自己研究。例题大部分选自紫皮严书。pdf版在主页资源 一、递归时间/空间分析 1.时间复杂度的分析 设…