| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring Bean名称讲解 -> 正文阅读 |
|
[Java知识库]Spring Bean名称讲解 |
一、概述当我们有多个相同类型的实现时,命名一个Spring bean 通过控制 bean 的命名,我们可以告诉 Spring 我们要将哪个 bean 注入目标对象。 在本文中,我们将讨论 Spring bean 命名策略,并探讨如何为单一类型的 bean 赋予多个名称。 2. 默认 Bean 命名策略Spring为创建 bean提供了多个注解。我们可以在不同的层次上使用这些注释。例如,我们可以在 bean 类上使用一些注解,而在创建 bean 的方法上使用一些注解 首先,让我们看看 Spring 的默认命名策略在起作用。当我们只指定注解而没有任何值时,Spring 如何命名我们的 bean? 2.1。类级注释让我们从在类级别使用的注解的默认命名策略开始。为了命名一个 bean,Spring 使用类名并将第一个字母转换为小写。 我们来看一个例子:
在这里,Spring 为类LoggingService创建一个 bean,并使用名称“?loggingService?”注册它。同样的默认命名策略适用于所有用于创建 Spring bean 的类级别注释,??例如@Component、@Service和@Controller 2.2.?方法级注释Spring 提供了@Bean和@Qualifer之类的注解,用于创建 bean 的方法。让我们看一个例子来理解@Bean注解的默认命名策略:
在这个配置类中,Spring在名称“?audit ”下注册了一个AuditService类型的 bean,因为?当我们在方法上使用@Bean注解时,Spring 使用方法名称作为 bean 名称。 我们还可以在方法上使用@Qualifier注解,我们将在下面看到一个示例。 3. bean的自定义命名当我们需要在同一个 Spring 上下文中创建多个相同类型的 bean 时,我们可以为这些 bean 提供自定义名称并使用这些名称来引用它们。 那么,让我们看看如何给我们的 Spring bean 一个自定义名称:
这一次,Spring 将创建名为“?myBean ”的MyCustomComponent类型的 bean 。 由于我们明确地为 bean 命名,Spring 将使用这个名称,然后可以使用它来引用或访问 bean。 与@Component(“myBean”)类似,我们可以使用@Service(“myService”)、@Controller(“myController”)和@Bean(“myCustomBean”)等其他注解来指定名称,然后Spring 会注册具有给定名称的 bean。 4. 使用@Bean和@Qualifier命名Bean4.1。@Bean有价值正如我们之前看到的,@Bean注解是在方法级别应用的,默认情况下,Spring 使用方法名作为 bean 名。 这个默认的 bean 名称可以被覆盖——我们可以使用@Bean注解指定值:
在这种情况下,当我们想要获取一个MyCustomComponent类型的 bean 时,我们可以使用名称“?beanComponent?”来引用这个 bean。 Spring?@Bean注解通常在配置类方法中声明。它可以通过直接调用它们来引用同一类中的其他@Bean方法。 4.2.?@Qualifier具有价值我们也可以使用@Qualifier注解来命名bean。 首先,让我们创建一个接口Animal,它将由多个类实现:
现在,让我们定义一个实现类
Cat?并为其添加
@Qualifier?注释,其值为“?
cat?”:
让我们添加另一个Animal的实现,并使用@Qualifier和值“?dog?”对其进行注释:
现在,让我们编写一个PetShow类,我们可以在其中注入Animal的两个不同实例:
在Pet?Show 类中,我们通过在构造函数参数上使用@Qualifier注解注入了Animal类型的两种实现,每个注解的值属性中都有限定的 bean 名称。每当我们使用这个限定名时,Spring 都会将具有该限定名的 bean 注入目标 bean。 5. 验证 Bean 名称到目前为止,我们已经看到了不同的示例来演示为 Spring bean 命名。现在的问题是,我们如何验证或测试这一点? 让我们看一个单元测试来验证行为:
在这个 JUnit 测试中,我们在setUp方法中初始化AnnotationConfigApplicationContext?,该方法用于获取 bean。 然后我们简单地使用标准断言验证我们的 Spring bean 的类。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 15:40:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |