`
大玉儿
  • 浏览: 21045 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

spring bean id和bean name的区别

阅读更多

1. Spring bean defination

一般情况下,我们定义和应用bean都使用bean id,但是今天我遇到了这样的定义

<bean id = "writeService" class = "aServiceImp, bServiceImp, cServiceImp"
           name = "aService, bService, cService"  init-method = "init">
           <property name = "interfaceName">
                     <value>baseService></value>
           </property>
           ............
</bean>

 

这样的定义首先表明aService, bService, cService都implements interface baseService

用spring IOC注入的时候,既可以用id writeService,也可以用name aService/bService/cService

 

bean id 和 bean name到底有什么区别呢?

Google和百度都找不到我想要的答案,最后还是在spring的官网上找到了如下的解释,我自己理解为:bean name的定义是合法的,但是一个bean name不能唯一的代表一个bean,也就是多个bean可以拥有相同的bean name,但是bean id是唯一标示一个bean的,所以我们应该尽量避免用bean name来引用bean。

 

原文解释:

For a fallback match, the bean name is considered as a default qualifier value. This means that the bean may be defined with an id "main" instead of the nested qualifier element, leading to the same matching result. However, note that while this can be used to refer to specific beans by name, @Autowired  is fundamentally about type-driven injection with optional semantic qualifiers. This means that qualifier values, even when using the bean name fallback, always have narrowing semantics within the set of type matches; they do not semantically express a reference to a unique bean id. Good qualifier values would be "main" or "EMEA" or "persistent", expressing characteristics of a specific component - independent from the bean id (which may be auto-generated in case of an anonymous bean definition like the one above).

 

 

2
0
分享到:
评论

相关推荐

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    Spring Bean创建初始化流程.docx

    在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...

    spring bean 属性总结

    Spring的`&lt;beans&gt;`和`&lt;bean&gt;`元素及其属性提供了强大的配置能力,使开发者能够灵活地定义、配置和管理应用程序中的组件。通过深入了解这些元素和属性,开发人员可以更有效地利用Spring框架的功能,构建更加健壮和可...

    Spring Bean简单应用实例

    Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来管理这些Bean。在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,...

    Spring的Bean配置

    在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式,以及不同类型的IOC容器。 **Spring的Bean配置**: 在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配...

    Spring bean 管理

    - id和name:id属性是Bean的标识符,name属性可以包含特殊字符,且可以有多个别名。 - class:用于指定Bean所对应的完整类名,Spring通过反射来创建该类的实例。 3. Bean的作用域: - singleton:默认的作用域,...

    Spring定义bean的三种方式和自动注入

    在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...

    Spring之核心容器bean

    Spring框架是Java开发中的一个核心库,主要用于管理对象(通常称为bean)的生命周期和依赖关系。在本篇文章中,我们将深入探讨Spring的核心容器及其bean的概念,以帮助你更好地理解和使用这个强大的工具。 **Spring...

    Java中Spring获取bean方法小结

    总结,Spring框架通过BeanFactory和ApplicationContext提供了灵活的方式来管理和获取Bean。开发者可以根据应用需求选择合适的方式,从XML配置到注解注入,再到基于Java的配置,Spring都提供了全面的支持。理解这些...

    详解Spring中Bean的生命周期和作用域及实现方式

    3. 设置BeanName:在这个阶段,Bean已经实例化,并且已经设置了名称。 4. 设置BeanFactory:在这个阶段,Bean已经实例化,并且已经设置了BeanFactory。 5. 设置ApplicationContext:在这个阶段,Bean已经实例化,...

    spring依赖注入bean

    综上所述,Spring 的依赖注入和 Bean 管理不仅限于 Web 应用,也可以方便地应用于 Java Application 中,通过 XML 或注解配置来实现组件间的解耦,提高代码质量。这个示例项目 `test` 可能包含了实现上述功能的代码...

    day38 08-Spring的id、name和scope顺序

    在Spring框架中,`id`、`name`和`scope`是配置bean时常见的三个属性,它们对于理解和管理Bean的生命周期至关重要。今天我们将深入探讨这三个属性的含义、使用方法以及它们之间的顺序规则。 首先,`id`是Spring Bean...

    spring IOC反射装载bean

    在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和管理Bean,并利用Java的反射机制来实例化这些Bean。 首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些...

    SPRING:bean配置properties

    在Spring框架中,Bean的配置与管理是其核心功能之一,而通过`PropertyPlaceholderConfigurer`进行属性占位符的配置则是实现动态配置的关键技术。本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置...

    Spring实战之获得Bean本身的id操作示例

    从测试结果中,我们可以看到,Spring容器已经成功地将Bean的配置id传递给了setBeanName()方法,并将其保存在了beanName实例变量中。 在Spring框架中,获取Bean本身的id操作可以通过实现BeanNameAware接口来实现。...

    Spring中关于Bean的管理的课件

    6. **Spring的自动装配(autowiring)**:Spring可以自动识别并装配Bean的依赖,减少了显式配置的工作量,有byType、byName等多种方式。 7. **集合装配**:Spring支持对数组、List和Map类型的属性进行装配,使得...

    第四章 Spring Bean基础1

    - **Name/ID**:Bean 的唯一标识,可以是名称或 ID。 - **Scope**:Bean 的作用域,如单例(singleton)、原型(prototype)等,决定一个容器内 Bean 的实例数量。 - **Constructor arguments**:用于依赖注入的...

    Spring Boot: Bean definition overriding

    因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅打印该bean的值(非常重要的是,它们都具有相同的名称)。 那么您认为将要打印什么? 示例1 @SpringBootApplication public class ...

    Spring如何获取Bean

    Spring 中获取 Bean 的多种方式 在 Spring 框架中,获取 Bean 是一个非常重要的步骤,因为它是使用 Spring 框架的基础。Spring 提供了多种方式来获取 Bean,这些方式可以根据不同的应用场景选择使用。 通过 XML ...

Global site tag (gtag.js) - Google Analytics