spring-core-4-34 | Spring Bean的别名:为什么命名Bean还需要别名?

2026开发者AI选型指南:Gemini、ChatGPT、Claude代码能力硬核对比 AI大模型在软件开发中的实际效能,本质是其对编程语言规范、框架生命周期和工程约束的理解深度。从TypeScript泛型推导、POSIX Shell可移植性到Spring Boot配置绑定时序,不同模型因训练数据源(如TS编译器源码、POSIX标准草案、Spring Framework commit日志)差异,导致在语义断点识别、错误根因定位和生产就绪代码生成上表现迥异。技术价值不仅在于‘能写出代码’,更在于能否规避隐性风险——如Docker镜像安全、K8s YAML语义歧义、Java Bean初始化时机冲突 阅读详情

Spring Bean 的别名

Bean 别名(Alias)的价值

• 复用现有的BeanDefinition

• 更具有场景化的命名方法,比如:

代码示例

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.geekbang.thinking.in.spring.bean.definition;

import org.geekbang.thinking.in.spring.ioc.overview.domain.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 34 | Spring Bean的别名:为什么命名Bean还需要别名?
 * Bean 别名示例
 * Bean 别名(Alias)的价值
 * • 复用现有的BeanDefinition
 * • 更具有场景化的命名方法,比如:
 * <alias name="myApp-dataSource" alias="subsystemA-dataSource"/>
 * <alias name="myApp-dataSource" alias="subsystemB-dataSource"/>
 *
 * @author <a href="mailto:mercyblitz@gmail.com">Mercy</a>
 * @since
 */
public class BeanAliasDemo {

    public static void main(String[] args) {
        // 配置 XML 配置文件
        // 启动 Spring 应用上下文
        BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath:/META-INF/bean-definitions-context.xml");
        // 通过别名 xiaomage-user 获取曾用名 user 的 bean
        User user = beanFactory.getBean("user", User.class);
        User xiaomageUser = beanFactory.getBean("xiaomage-user", User.class);
        // 两种方式获取, 会发现两个bean是相同的
        System.out.println("xiaomage-user 是否与 user Bean 相同:" + (user == xiaomageUser));
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 34 | Spring Bean的别名:为什么命名Bean还需要别名?-->
    <!-- 导入第三方 Spring XML 配置文件 -->
    <!-- 这里面有一个user类 id = user -->
    <import resource="classpath:/META-INF/dependency-lookup-context.xml" />

    <!-- 将 Spring 容器中 "user" Bean 关联/建立别名 - "xiaomage-user" -->
    <alias name="user" alias="xiaomage-user" />

</beans>
JavaWeb之Springboot原理与实战 启动SpringBoot项目的主入口程序 HelloController.java文件内容如下: 在浏览器输入localhost:8888/hello 三、Springboot3+MyBatis+Swagger整合实战 项目结构 数据库表结构 阅读详情

相关推荐

Spring中Bean的命名方式代码详解

主要介绍了Spring中Bean的命名方式代码详解,具有一定借鉴价值,需要的朋友可以参考下

spring_为什么我喜欢Spring bean别名

spring Spring框架被广泛用作依赖项注入容器,这是有充分理由的。 首先,它促进了集成测试,并为我们提供了自定义bean创建和初始化的能力(例如@Autowired用于List类型)。 但是还有一个非常有用的功能,可能会被忽略,因此让我们讨论一下bean别名。 Bean别名使我们可以覆盖已配置的Bean,并用不同的对象定义替换它们。 当bean定义是从我们无法控制的外部资源继承时,这...

cunhu4317的博客 192

Zotero PDF Translate插件实战:DeepL API免费申请与高效翻译配置指南

本文提供Zotero PDF Translate插件配置DeepL API的完整实战指南。详细介绍了如何免费申请DeepL API密钥,解决国内访问问题,并在插件中完成精细配置,实现文献阅读时的无缝划词翻译,大幅提升科研人员和学生的英文文献阅读效率。

rum55的博客 455

Spring中Bean别名的作用

在我们日常工作中,Bean的别名使用较少,因为大部分场景下,我们的Bean都是自己定义自己使用,比如: @Component public class UserServiceImpl1 implements UserService { public void test() { System.out.println("userServiceImpl1:test"); } } @Component public class OrderService { @Autowired() @Qualifie

qq896413023的博客 3443

一步步教你离线安装vsftpd并配置FTP服务

在安装vsftpd之前,需确保系统更新至最新版本,并检查防火墙配置以允许FTP流量。安装过程涉及使用包管理器(如apt-get或yum)下载vsftpd及其依赖包,特别是在离线环境中,需先下载所有相关包并传输到目标机器。安装完成后,通过命令验证安装并启动服务。配置vsftpd包括编辑配置文件以设置访问权限和安全性参数,如匿名访问和本地用户访问。此外,需配置防火墙开放FTP端口,并通过FTP客户端测试服务。最后,建议进行安全配置,如禁用匿名访问和配置SSL/TLS加密,并设置日志记录以监控服务状态。

a_join的博客 2482

解锁SPWM电压利用率:三次谐波注入幅值的黄金分割点

本文深入探讨了SPWM电压利用率的提升方法,重点介绍了三次谐波注入技术及其黄金分割点(1/6比例)。通过数学推导和工程实践,揭示了如何通过特定幅值的三次谐波注入将电压利用率从86.6%提升至115%,与SVPWM相当。文章还提供了实验室调试流程和DSP实现代码,帮助工程师优化逆变器设计。

weixin_30729609的博客 915

12 Spring Bean的别名

(1)Bean别名(Alias)的价值 复用现有的BeanDefinition 更具有场景化的命名方法:比如: <bean name="myApp-dataSource" alias="subsystemA-dataSource"/> <bean name="myApp-dataSource" alias="subsystemB-dataSource"/> (2)实例代码 复用Bean配置信息 package org.binsoft.thinking.in.

hero_java的专栏 389

【明道云】如何让用户可以新增但不能修改记录

在设计表单时直接将字段设置只读是不行的。字段设置只读将会直接让界面上此字段的前端组件不可编辑。

每日出拳老爷子的博客 701

spring的BeanDefinition

BeanDefinition

liulong1010的专栏 348

通用抓取算法AnyGrasp(Graspnet)——本地部署并测试自定义输入数据

背景:GraspNet在数据采集方面,首先将相机固定到机械臂末端,对同一个场景拍摄256个不同的角度,同时场景中的每个物体都会提前采集好3D模型,之后将其投射到仿真环境中,在仿真环境中,对抓取位姿进行打标签,如此完成数据的采集。在运行官方的测试示例时,使用的是路径下的输入数据,可以分析下。color.png(输入):rgb图像(输出):输出的生成抓取位姿的图像depth.png(输入):和当前rgb图像对应的深度图像(保存格式是单通道uint16)meta.mat。

boss-dog 1326

电子电器架构 --- OEM企标中规定ECU启动时间的目的

电子电器架构 --- OEM企标中规定ECU启动时间的目的

Soly_kun的博客 223

搞清楚beanName、id、name和alias

基于前面介绍的用spring改造后的示例应用,我们将做一些实验来了解bean定义的beanName、id、name属性以及别名映射的用法,并做相关总结。

felix_alone2012的博客 1105

uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用)

uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia

✅ 精选推荐文章 1万+

JavaWeb知识点

1.Maven中的仓库用来存储什么的?Maven的仓库是用来存储和管理jar包的2.Maven中有哪几类仓库?查找依赖(jar)的顺序是什么样的?本地仓库(1)远程仓库(2)中央仓库(3)

ql200106的博客 302

FLUENT Meshing Watertight Geometry工作流入门 - 4 局部加密区域

总结一下本课程中学到的内容:我们了解了如何使用模型中特定兴趣区域的BOI和FOI局部尺寸控制来加密网格。然后,了解了如何使用Box类型的局部细化区域。最后,学习了Ansys Fluent Meshing Watertight Geometry Workflow的Offset Surface类型创建局部细化区域任务。

B_etter_Man的博客 6640

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JB3-9-SpringAI(一)

基础对话,通义千问,SpringAI,SpringAIAlibaba,AI对话,文生图,文生音频,文生视频,AI记忆,RAG,ETL,向量库,ToolCalling,MCP,Graph 等。

周航宇的博客 3922

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

并行分布式框架:Celery、rq、funboost

Celery是一个异步任务的调度工具,也可以叫做 "分布式任务队列(Distributed Task Queue)"。

freeking101的博客 5万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

杀死Spring - BeanFactory系列中的bean别名alias机制

杀死Spring - BeanFactory系列中的bean别名alias机制 Spring主要是通过SimpleAliasRegistry来完成别名功能的,它的类图继承关系如下: 那么它是怎么完成的呢? 一:域 /*存储别名 *若jdk >=1.5,返回java.util.concurrent.ConcurrentHashMap,否则 *加载并返回edu.emory.mathcs.backport.java.util.concurrent.ConcurrentHashMap,否则 *返回S

ApatheCrazyFan的博客 552

Spring中Bean的命名

Spring中Bean的命名 1、每个Bean可以有一个id属性,并可以根据该id在IOC容器中查找该Bean,该id属性值必须在IoC容器中唯一; 2、可以不指定id属性,只指定全限定类名,如: &lt;bean class="com.zyh.spring3.hello.StaticBeanFactory"&gt;&lt;/bean&gt; 此时需要通过接口getBean(Class&...

盖世小可爱的博客 2060

Bean 在 Spring 中代表什么含义,为什么这样命名?

但问题是,“元素”(element)、“单元”(unit)、“原子”(atom)、“组件”(component)等词在计算机相关领域已经或日后可能成为该领域的专有名词,如果使用这种命名,有可能发生“二义性”的冲突,如对初学者来说的概念的冲突、在代码中变量名的冲突等等。Bean在Spring框架中代表一种基本单元,在Spring框架中的几乎所有的预置对象都是一种“Bean”,对数据的各种处理也是以Bean为单位来进行的,用户自定义数据也需要构建成Bean之后才能处理。...

暗诺星刻的博客 4467

Bean配置文件之bean元素、alias元素、import元素

前言: 在Spring家族项目中,我们经常使用注解来配置Bean对象,很少用到xml配置文件 原因: 因为使用注解来配置Bean对象,只需加个注解即可 而xml配置Bean对象,则需要写大量的bean元素,容易造成配置文件的繁冗 但是掌握如何创建xml配置文件,有助于我们快速掌握相关注解的作用 1、bean元素 作用:用来定义一个bean对象 基本格式: <bean id="bean唯一标识(bean名称)" name="bean名称或别名" class="完整类型..

qq_44781206的博客 685

为什么我喜欢Spring bean别名

Spring框架被广泛用作依赖项注入容器,这是有充分理由的。 首先,它促进了集成测试,并赋予了我们自定义Bean创建和初始化功能的能力(例如@Autowired用于List类型 )。 但是还有一个非常有用的功能,可能会被忽略,因此让我们讨论一下bean别名 。 Bean别名使我们可以覆盖已配置的Bean,并用不同的对象定义替换它们。 当bean定义是从我们无法控制的外部资源继承时,这...

最佳 Java 编程 770

Spring Bean设置别名的两种方式

1.使用alias             使用alias设置别名,alias的name要和bean的ID相同。可以设置多个别名 2.使用name        多个别名用逗号隔开

Java程序源 1万+

Spring中Bean别名使用方法

Bean别名有两种配置方式 使用bean标签,name属性,多个别名使用逗号隔开 使用alias标签,name属性为参考bean,alias属性为别名 别名测试 新建AliasBean包,AliasBean类 package AliasBean; import java.text.MessageFormat; public class AliasBean { public void run() { System.out.println(MessageFormat.format

愤怒的小兵 3540

Bean的别名两种用法

1.使用alias <bean id="studentAdd" class="..."> <alias name="studentAdd" alias="add"/> <alias name="studentAdd" alias="doAdd"/> </bean> 使用alias设置别名,alias的name要和bean的ID相同。...

weixin_30681615的博客 393

谈谈spring中bean的名字

谈谈spring中bean的名字      提到bean的名字,就要从声明bean的地方说起。在应用spring时,有两个地方可以声明一个bean,一个是在spring的配置文件中,一个是在代码中通过Component等标注声明。      代码中可以通过标注的方式来表示这个类是属于spring管理的类,这类标注有Component、Repository、Service以及Contro

hongxingxiaonan的专栏 1万+
上一篇: spring-core-4-33 | 命名Spring Bean:id和name属性命名Bean,哪个更好?
下一篇: spring-core-4-35 | 注册Spring Bean:如何将BeanDefinition注册到IoC容器?
sunforraining
博客等级 码龄9年 13粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值