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

 更新时间:2018年01月10日 15:12:01   作者:wangxin1248  
这篇文章主要介绍了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的命名:

<bean class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 

我们在程序入口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进行配置

<bean id="HelloWorldById" class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 

修改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进行配置

<bean name="HelloWorldByName" class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 

修改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进行配置

<bean id="HelloWorldById01" name="HelloWorldByName01" 
   class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 

修改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进行配置

<bean name="bean1;alias01;alias02;alias03" 
   class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 
<bean id="bean2" name="alias11;alias12;alias13" 
   class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 

修改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进行配置

<bean name="bean3" class="cn.lovepi.chapter03.definition.HelloWorldImpl"/> 
<alias name="bean3" alias="alias21"/> 
<alias name="bean3" alias="alias22"/> 

修改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实例代码

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

相关文章

  • 基于spring DI的三种注入方式分析

    基于spring DI的三种注入方式分析

    这篇文章主要介绍了基于spring DI的三种注入方式分析,具有很好的参考价值,希望对大家有所帮助。
    2021-07-07
  • 基于Java中两种jersey文件上传方式

    基于Java中两种jersey文件上传方式

    这篇文章主要介绍了基于Java中两种jersey文件上传方式的相关资料,需要的朋友可以参考下
    2016-01-01
  • 单例模式垃圾回收_动力节点Java学院整理

    单例模式垃圾回收_动力节点Java学院整理

    这篇文章主要为大家详细介绍了单例模式垃圾回收的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Spring中@Scope的几种取值方式

    Spring中@Scope的几种取值方式

    这篇文章主要介绍了Spring中@Scope的几种取值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • springboot swagger不显示接口的问题及解决

    springboot swagger不显示接口的问题及解决

    这篇文章主要介绍了springboot swagger不显示接口的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • JSP request.setAttribute()详解及实例

    JSP request.setAttribute()详解及实例

    这篇文章主要介绍了 javascript request.setAttribute()详解及实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • 基于Eclipse 的JSP/Servlet的开发环境的搭建(图文)

    基于Eclipse 的JSP/Servlet的开发环境的搭建(图文)

    本文将会详细地展示如何搭建JSP的开发环境。本次教程使用的是最新版的Eclipse 2018-09编辑器和最新版的Apache Tomcat v9.0,步骤详细,内容详尽,适合零基础学者作为学习参考
    2018-12-12
  • Java之mybatis使用limit实现分页案例讲解

    Java之mybatis使用limit实现分页案例讲解

    这篇文章主要介绍了Java之mybatis使用limit实现分页案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 例举fastJson和jackson转json的区别

    例举fastJson和jackson转json的区别

    今天小编就为大家分享一篇关于例举fastJson和jackson转json的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Spring Boot整合Web项目常用功能详解

    Spring Boot整合Web项目常用功能详解

    这篇文章主要介绍了Spring Boot整合Web项目常用功能详解,在Web应用开发过程中,可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的。,需要的朋友可以参考下
    2019-06-06

最新评论