欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-18 12:03:04
本文主要描述的是关于spring中bean的命名方式,通过简单实例向大家介绍了六种方式,具体如下。 一般情况下,在配置一个bean时需要为其指定一个id属性作为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实例代码

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

上一篇:

下一篇: