Spring bean名称

ops/2025/2/28 9:36:40/

1.概述

当有多个相同类型的实现时,命名一个Spring bean非常有用。这是因为 bean 没有唯一的名称,那么注入 bean 对 Spring 来说是不明确的。

通过控制 bean 的命名,可以告诉 Spring 要将哪个 bean 注入目标对象。

2.默认 Bean 命名策略

Spring为创建 bean提供了多个注解,可以在不同的层次上使用这些注解。例如,可以在 bean 类上放置一些注解,而在创建 bean 的方法上放置一些注解。

首先,来看 Spring 的默认命名策略在。当只指定注解而没有任何值时,Spring 如何命名 bean?

2.1.类级注释

从在类级别使用的注解默认命名策略开始。为了命名一个 bean,Spring 使用类名并将第一个字母转换为小写

来看一个例子:

@Service
public class LoggingService {
}

在这里,Spring 为类_LoggingService_创建一个 bean,并使用名称“ loggingService ”注册它。

同样的默认命名策略适用于所有用于创建 Spring bean 的类级别注解,例如*@Component*、_@Service_和*@Controller*。

2.2. 方法级注解

Spring 提供了*@Bean_和_@Qualifier*类的注解,用于创建 bean 的方法。

看一个例子来理解*@Bean*注解的默认命名策略:

@Configuration
public class AuditConfiguration {@Beanpublic AuditService audit() {return new AuditService();}
}

在这个配置类中,Spring在名称“audit ”下注册了一个**AuditService类型的 bean,当在方法上使用@Bean注解时,Spring 使用方法名称作为 bean 名称。

还可以在方法上使用*@Qualifier*注解

3. bean的自定义命名

当需要在同一个 Spring 上下文中创建多个相同类型的 bean 时,可以为这些 bean 提供自定义名称并使用这些名称来引用它们。

下面例子 如何给 Spring bean 一个自定义名称:

@Component("myBean")
public class MyCustomComponent {
}

这一次,Spring 将创建名为“ myBean”的MyCustomComponent类型的 bean 。

由于明确地为 bean 命名,Spring 将使用这个名称,然后可以使用它来引用或访问 bean。

与*@Component(“myBean”)类似,可以使用*@Service(“myService”)@Controller(“myController”)@Bean(“myCustomBean”)等其他注解来指定名称,然后Spring 会注册具有给定名称的 bean。


http://www.ppmy.cn/ops/161918.html

相关文章

字符串_实现 strStr()

[TOC](字符串_实现 strStr()) 一、leetcode-151 实现 strStr() 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串…

网络基础 —HTTP与HTTPS的基本介绍

网络基础 —HTTP与HTTPS的基本介绍 前言1. HTTP的基本概念1.1 什么是HTTP?1.2 HTTP的工作原理1.3 HTTP的特点1.4 HTTP的常见方法 2. HTTPS的基本概念2.1 什么是HTTPS?2.2 HTTPS的工作原理2.3 HTTPS的特点2.4 HTTPS的证书 3. HTTP与HTTPS的区别4. 为什么需…

蓝桥杯 五子棋对弈

五子棋对弈 问题描述 “在五子棋的对弈中,友谊的小船说翻就翻?” 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第一,比赛第二"的宗旨&#xff…

DIALOGPT:大规模生成式预训练用于对话响应生成

摘要 我们提出了一个大规模、可调节的神经对话响应生成模型,DIALOGPT(对话生成预训练变换器)。该模型训练于从2005年至2017年间Reddit评论链中提取的1.47亿次类似对话的交流,DIALOGPT扩展了Hugging Face的PyTorch变换器&#xff…

rustdesk远程桌面自建服务器

首先,我这里用到的是阿里云服务器 centos7版本,win版客户端。 准备工作 centos7 服务器端文件: https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-linux-amd64.zip win版客户端安装包&#xff1…

Python入门 — 类

面向对象编程中,编写表示现实世界中的事物和情景的类(class),并基于这些类来创建对象(object)。根据类来创建对象称为实例化,这样就可以使用类的实例(instance) 一、创建…

【Go】十六、protobuf构建基础服务信息、grpc服务启动的基础信息

商品服务 服务结构 创建 goods 服务,将之前 user 服务的基本结构迁移到 goods 服务上,完整目录是: mxshop_srvs user_srv … tmp … goods_srv config config.go 配置的读取表 global global.go 数据库、日志初始化、全局变量定义 handler …

网络安全学习中,web渗透的测试流程是怎样的?

渗透测试是什么?网络安全学习中,web渗透的测试流程是怎样的? 渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给我…