@Component

news/2024/4/19 1:37:40

@Component是Spring框架中的一个通用注解,用于标记一个类为组件,让Spring能够在应用程序启动时自动扫描并加载这些组件。

1. 基本使用

在类上添加@Component注解,即可将该类标记为一个组件,例如:

@Component
public class MyComponent {// ...
}

这样,Spring会自动扫描该类,并将其实例化为一个Bean,可以在其他地方通过依赖注入的方式使用。

2. 组件命名

@Component注解还可以指定组件的名称,通过value属性或者name属性进行设置,例如:

@Component("myComponent")
public class MyComponent {// ...
}

或者:

@Component(value = "myComponent")
public class MyComponent {// ...
}

在通过依赖注入时,可以使用指定的名称来引用该组件。

3. 作用域配置

@Component注解还可以配置组件的作用域,通过scope属性进行设置,默认为单例模式(Scope.SINGLETON),也可以设置为原型模式(Scope.PROTOTYPE),例如:

@Component
@Scope("prototype")
public class MyComponent {// ...
}

这样,每次从容器中获取该组件的实例时,都会创建一个新的对象。

4. 组件自动扫描的范围

@Component注解只会自动扫描指定包及其子包下的组件,如果想要扫描其他包,可以在启动类上添加@ComponentScan注解,指定要扫描的包路径,例如:

@SpringBootApplication
@ComponentScan("com.example")
public class MyApplication {// ...
}

这样,Spring会自动扫描"com.example"包及其子包下的所有组件。

5. 组件的生命周期

当一个组件实例化后,Spring会管理其整个生命周期,包括初始化和销毁过程。可以通过在组件类中添加特定的方法并使用相应的注解来实现这些生命周期回调。

  • @PostConstruct:在组件初始化完成后调用的方法,常用于进行一些初始化操作。
  • @PreDestroy:在组件销毁之前调用的方法,常用于释放资源等清理操作。
@Component
public class MyComponent {@PostConstructpublic void init() {// 初始化操作}@PreDestroypublic void destroy() {// 清理操作}
}

以上就是@Component注解的常用配置和使用方式。通过@Component注解,可以将一个类标记为组件,使得Spring能够自动扫描并加载这些组件,简化了配置和管理的过程。


http://www.ppmy.cn/news/991028.html

相关文章

Vue2 第六节 key的作用与原理

(1)虚拟DOM (2)v-for中的key的作用 一.虚拟DOM 1.虚拟DOM就是内存中的数据 2.原生的JS没有虚拟DOM: 如果新的数据和原来的数据有重复数据,不会在原来的基础上新加数据,而是重新生成一份 3. Vue会有虚拟…

力扣热门100题之矩阵置0【中等】

题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff…

《EalsticSearch从入门到实战》-CRUD+JAVA常用操作

目录 《EalsticSearch从入门到实战》 windows环境安装elasticsearchkibana并完成JAVA客户端查询《EalsticSearch从入门到实战》-CRUDJAVA常用操作 前言 上一篇《windows环境安装elasticsearchkibana并完成JAVA客户端查询》中我们已经完成了EalsticSearchKibana环境的安装&a…

Open3D点云数据处理(十六):体素滤波之近似体素质心下采样

文章目录 1 体素下采样原理1.1 体素下采样分类1.2 下采样结果对比2 体素中心下采样代码实现2.1 代码行实现2.2 函数封装 my_approximate_voxel_down_sample()专栏目录:Open3D点云数据处理(Python) 1 体素下采样原理 点云体素下采样(Voxel Downsampling)是一种将点云数据…

17-C++ 数据结构 - 栈

📖 1.1 什么是栈 栈是一种线性数据结构,具有后进先出(Last-In-First-Out,LIFO)的特点。可以类比为装满盘子的餐桌,每次放盘子都放在最上面,取盘子时也从最上面取,因此最后放进去的盘…

Windows 10 中无法最大化任务栏中的程序

方法1:仅选择选项 PC 屏幕 如果您使用双显示器,有时这可能会发生在您的 1 台计算机已插入但您正在访问的应用程序正在另一台计算机上运行的情况下,因此您看不到任何选项。因此,请设置仅在主计算机上显示显示的 PC 屏幕选项。 第…

机器学习相关问题

1、XGBOOST相比于GBDT有何不同?XGBOOST为什么快?XGBOOST如何支持并行? (1)GBDT只能用CART回归树,而XGBOOST可以用CART树(回归/分类),还可以用用想LR之类的线性模型,相当…

web漏洞-java安全(41)

这个重点是讲关于java的代码审计,看这些漏洞是怎么在java代码里面产生的。 #Javaweb 代码分析-目录遍历安全问题 这个漏洞原因前面文章有,这次我们看看这个漏洞如何在代码中产生的,打开靶场 解题思路就是通过文件上传,上传文件…

Docker的七项优秀实践

众所周知,作为一个文本文档,Dockerfile包含了用户创建镜像的所有命令和说明。Docker可以通过读取Dockerfile中指令的方式,去自动构建镜像。因此,大家往往认为编写Dockerfile理应非常简单,只需从互联网上选择一个示例&a…

IDEA将本地项目上传到码云

一、创建本地仓库并关联 用IDEA打开项目,在菜单栏点击vcs->create git repository创建本地仓库, 选择当前项目所在的文件夹当作仓库目录。 二、将项目提交本地仓库 项目名右键就会出现“GIT”这个选项->Add->Commit Directory, 先将项目add…

判断数字中有多少位1

使用最后一位-1,来判断数中有多少位1 flag0; while (x) {x x & (x - 1);flag; } 这个循环会不断执行以下操作,直到x变为0为止: x - 1:将x的二进制表示中最右边的1变为0,并将该位右边的所有位变为1。…

js 四舍五入保留一位小数 求百分比

概览:一个数据占一组数据的比率,并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接: mdn中文文档Math.round() 实现思路: Math.round(x) 函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码&a…

基于ThreadPoolExecutor实现动态线程池

项目上,我们是根据业务的使用频率,基于ThreadPoolExecutor自定义一个线程池,线程池的核心线程数、最大线程数、阻塞队列的容量都是估计的设置的,但是不知道线程资源的真正使用情况。 1.ThreadPoolExecutor配置参数动态修改 先来…

【C语言】嵌入式C语言项目管理利器:深入理解Makefile的应用与实践

目录 一、makedile的概述 1、案例引入 2、makefile 3、Makefile优点 二、makefile的语法规则 1、语法规则 2、简单实战 三、makefile的变量 1、自定义变量 2、系统环境变量 3、预定义变量 4、高级makefile 一、makefile的概述 1、案例引入 gcc a.c b.c c.c ‐o …

用C语言构建一个手写数字识别神经网络

(原理和程序基本框架请参见前一篇 "用C语言构建了一个简单的神经网路") 1.准备训练和测试数据集 从http://yann.lecun.com/exdb/mnist/下载手写数字训练数据集, 包括图像数据train-images-idx3-ubyte.gz 和标签数据 train-labels-idx1-ubyte.…

Spring——更快捷的存储 / 获取Bean对象

文章目录 前言一、存储 Bean 对象类注解为什么有五个类注解使用类注解存储对象配置扫描路径(重中之重)添加注解存储 Bean 对象 方法注解配置扫描路径(重中之重)使用方法注解存储对象 二、获取 Bean 对象Autowired属性注入Setter注入构造方法注入 Resource 总结 前言 本人是一个…

基于C语言 --- 自己写一个三子棋小游戏

C语言程序设计笔记---019 初阶三子棋小游戏(开源)1、arr_main.c程序大纲2、arr_game1.h3、arr_game1.c3.1、 自定义初识化函数 InitBoard( ) 和 自定义显示函数 DisPlayBoard( )3.2、 自定义玩家下棋函数 PlayerMove( )3.4、 自定义电脑下棋函数 ComputerMove( )3.5、 输赢判断…

JavaScript--异步编程

JavaScript的异步编程是指在执行任务时,不必等待当前任务完成,而是可以继续执行下一个任务。这种方式可以提高程序的性能和响应速度。 在 JavaScript 中,常见的异步编程方法有以下几种: 回调函数(Callback Function&a…

Huggingface基本使用

目录 0.install 1.tokenizer 2.datasets 3.metrics 0.install !pip install transformers !pip install datasets 1.tokenizer from transformers import BertTokenizer#加载预训练字典和分词方法 tokenizer BertTokenizer.from_pretrained(pretrained_model_name_or…

二十三章:抗对抗性操纵的弱监督和半监督语义分割的属性解释

0.摘要 弱监督语义分割从分类器中生成像素级定位,但往往会限制其关注目标对象的一个小的区域。AdvCAM是一种图像的属性图,通过增加分类分数来进行操作。这种操作以反对抗的方式实现,沿着像素梯度的相反方向扰动图像。它迫使最初被认为不具有区…