热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

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

本文主要描述的是关于spring中bean的命名方式,通过简单实例向大家介绍了六种方式,具体如下。

一般情况下,在配置一个Bean时需要为其指定一个id属性作为bean的名称。id在IoC容器中必须是唯一的,此外id的命名需要满足xml对id的命名规范。

在实际情况中,id命名约束并不会给我们带来影响。但是如果用户确实希望用到一些特殊字符来对bean进行命名,那么可以使用bean的name属性来进行命名,name属性没有字符上的限制,几乎可以使用任何字符。

每个Bean可以有一个或多个id,我们把第一个id称为“标识符”,其余id叫做“别名”,这些id在IoC容器中必须唯一。

首先来介绍一下Beanid的命名规则:

1.遵循XML命名规范
2.由字母,数字,下划线组成
3.驼峰式,首个单词字母小写,从第二个单词开始首字母大写。

接下来我们使用具体的例子来介绍Bean的不同命名方式

1.配置全限定类名,唯一

在示例中主要向大家输出问候信息,我们需要一个HelloWorld接口以及一个名称为HelloWorldImpl的实现类。接下来我们创建一个配置文件和一个程序的入口类。

首先在项目中创建包definition,接下来在包中创建HelloWorld接口:

public interface HelloWorld { 
  public void sayHello(); 
} 

接下来我们创建HelloWorldImpl实现类:

public class HelloWorldImpl implements HelloWorld{ 
  public void sayHello() { 
    System.out.println("Hello World"); 
  } 
} 

接下来我们在配置文件中为HelloWorldImpl进行Bean的命名:

 

我们在程序入口Mian.java来加载配置文件以及运行示例。

public static void sayHelloWorldByClass(){ 
  //使用FileSystemXmlApplicationContext加载配置文件信息 
  BeanFactory beanFactory= 
     new FileSystemXmlApplicationContext("src/conf/conf-definition.xml"); 
  //获取bean实例 
  HelloWorld helloWorld=beanFactory.getBean(HelloWorldImpl.class); 
  helloWorld.sayHello(); 
} 

在Main.java文件当中我们需要:

 1.完成配置文件的加载以及SpringIoC容器的启动
 2.从容器中获得HelloWorldImpl实现类的实例
 3.输出问候信息

2.指定id,唯一

在配置文件中对bean进行配置

 

修改Main程序入口,新建方法来调用bean

public static void sayHelloWorldById(){ 
  BeanFactory factory= 
      new FileSystemXmlApplicationContext("src/conf/conf-definition.xml"); 
  HelloWorld helloWorld=factory.getBean("HelloWorldById",HelloWorldImpl.class); 
  helloWorld.sayHello(); 
} 

3. 指定name,name为标识符,唯一

在配置文件中对bean进行配置

 

修改Main程序入口,新建方法来调用bean

public static void sayHelloWorldByName(){ 
  BeanFactory factory= 
      new FileSystemXmlApplicationContext("src/conf/conf-definition.xml"); 
  HelloWorld helloWorld=factory.getBean("HelloWorldByName",HelloWorldImpl.class); 
  helloWorld.sayHello(); 
} 

4.指定id和name,其中id为标识符,name为别名,唯一

在配置文件中对bean进行配置

 

修改Main程序入口,新建方法来调用bean

public static void sayHelloWorldByNameAndId(){ 
  BeanFactory factory= 
      new FileSystemXmlApplicationContext("src/conf/conf-definition.xml"); 
  HelloWorld helloWorld01=factory.getBean("HelloWorldById01",HelloWorldImpl.class); 
  HelloWorld helloWorld02=factory.getBean("HelloWorldByName01",HelloWorldImpl.class); 
  helloWorld01.sayHello(); 
  helloWorld02.sayHello(); 
} 

5. 指定多个name,其中多个name需要用分号来进行分割,第一个name为标识符,其他的为别名,唯一

在配置文件中对bean进行配置

 
 

修改Main程序入口,新建方法来调用bean

public static void sayHelloWorldByMutilName(){ 
  BeanFactory factory= 
      new FileSystemXmlApplicationContext("src/conf/conf-definition.xml"); 
  HelloWorld helloWorld1=factory.getBean("bean1",HelloWorldImpl.class); 
  HelloWorld helloWorld01=factory.getBean("alias01",HelloWorldImpl.class); 
  HelloWorld helloWorld02=factory.getBean("alias02",HelloWorldImpl.class); 
  HelloWorld helloWorld03=factory.getBean("alias03",HelloWorldImpl.class); 
  helloWorld1.sayHello(); 
  helloWorld01.sayHello(); 
  helloWorld02.sayHello(); 
  helloWorld03.sayHello(); 
 
  HelloWorld helloWorld2=factory.getBean("bean2",HelloWorldImpl.class); 
  HelloWorld helloWorld11=factory.getBean("alias11",HelloWorldImpl.class); 
  HelloWorld helloWorld12=factory.getBean("alias12",HelloWorldImpl.class); 
  HelloWorld helloWorld13=factory.getBean("alias13",HelloWorldImpl.class); 
  helloWorld2.sayHello(); 
  helloWorld11.sayHello(); 
  helloWorld12.sayHello(); 
  helloWorld13.sayHello(); 
} 

6. 指定别名,使用alias标签来进行指定,唯一

在配置文件中对bean进行配置

 
 
 

修改Main程序入口,新建方法来调用bean

public static void sayHelloWorldByAlias(){ 
  BeanFactory factory= 
      new FileSystemXmlApplicationContext("src/conf/conf-definition.xml"); 
  HelloWorld helloWorld01=factory.getBean("bean3",HelloWorldImpl.class); 
  HelloWorld helloWorld02=factory.getBean("alias21",HelloWorldImpl.class); 
  HelloWorld helloWorld03=factory.getBean("alias22",HelloWorldImpl.class); 
  helloWorld01.sayHello(); 
  helloWorld02.sayHello(); 
  helloWorld03.sayHello(); 
 
} 

利用别名命名时得先有一个唯一的名称(id和name都可以)

总结

以上就是本文关于Spring中Bean的命名方式代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

浅谈Spring中Bean的作用域、生命周期

Spring实例化bean的方式代码详解

Spring工厂方法创建(实例化)bean实例代码

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


推荐阅读
  • 面向切面编程(AOP)是Spring框架的两大核心概念之一,另一个核心概念是控制反转(IoC)。AOP通过在应用程序中分离横切关注点,如日志记录、事务管理和安全性,从而提高代码的模块化和可维护性。本文将深入探讨AOP的核心概念和术语,帮助读者更好地理解和应用这一重要技术。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 本文介绍了一种利用Dom4j库和JFileChooser组件在Java中实现XML文件自定义路径导出的方法。通过创建一个Document对象并设置根元素,结合JFileChooser选择目标路径,实现了灵活的XML文件导出功能。具体步骤包括初始化Document对象、构建XML结构以及使用JFileChooser选择保存路径,确保用户能够方便地将生成的XML文件保存到指定位置。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 在尝试为 Unity 编译一个简单的 Java 库时,运行 `ant jar` 命令后遇到了 Java I/O 异常。具体错误信息为“无法启动程序 ${aAPT},错误代码 2”,这通常表示指定的文件或目录不存在。此问题可能是由于环境配置不正确或路径设置有误导致的。建议检查相关路径和环境变量,确保所有依赖项都已正确安装和配置。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 如何在IntelliJ IDEA中生成Maven项目的所有Jar包依赖关系图
    本文详细介绍了如何在IntelliJ IDEA中生成Maven项目的完整Jar包依赖关系图。通过具体步骤和示例,帮助开发者清晰地理解并掌握这一重要功能,适合希望深入了解Maven依赖管理的读者学习参考。 ... [详细]
  • 在ROS环境中解决libxml2 I/O警告:无法加载外部实体问题的详细方法
    在ROS环境中解决libxml2 I/O警告:无法加载外部实体问题的详细方法 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 微信小程序图片上传功能详解:wx.chooseImage与wx.uploadFile的使用方法与注意事项
    在微信小程序中,图片上传功能是开发者常用的功能之一。本文详细介绍了 `wx.chooseImage` 和 `wx.uploadFile` 的使用方法及注意事项。通过 `wx.chooseImage`,用户可以选择本地图片或拍摄新照片,而 `wx.uploadFile` 则用于将选中的图片上传到服务器。文章还提供了代码示例,帮助开发者更好地理解和应用这两个 API。此外,文中还讨论了常见的错误处理和性能优化技巧,确保图片上传过程的稳定性和高效性。 ... [详细]
  • JBPM 6.5 环境配置深入解析(下篇)
    本文深入探讨了JBPM 6.5 的环境配置细节,从零开始详细介绍了下载、解压后的文件结构,并结合实际操作步骤,为初学者提供了全面的配置指南。通过具体的示例和详细的解释,帮助读者快速掌握 JBPM 6.5 的安装与配置过程。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
author-avatar
2012-末日审判
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有