今日做东东,遇到一个问题。就是一些bean是通过@Service的方式声明成为bean的。
结果在某些应用里面因为需要序列化的原因,不能直接注入bean,需要在bean加载完之后手动取出需要的bean并且应用。但是声明的bean并没有名字....
疑惑之下,看了一下Spring的源码,理解了一下spring bean的id,name的管理方式,理解如下:
id是唯一标志一个bean的。在一个bean生成的过程中,如果有id,那么自然最好。如果没有设置id,只设置了
name属性(name属性可以设置多个,比如: a,b,c),那么就把name属性中的第一个取出来,作为id;
如果都ID和name都没有设置(例如:@Service),那么系统会有一个默认生成id的方式。就是段类名。
比如:com.abc.T.class的短类名就是t(Spring取出短类名之后会进行转化,转换成java常用的参数命名形式,比 如:AtTen会被转化成atTen.).只是有一点很让我疑惑,那就是采用短类名的方式容易出现id重复的
bean,于是在加载的时候肯定会报错。不明白为什么spring没采取长类名的方式。
渴求高人指点。
分享到:
相关推荐
- **id属性**:是Bean在BeanFactory中的唯一标识符,用于通过BeanFactory获取Bean实例。例如,`<bean id="myBean" class="com.example.MyClass">`。 - **name属性**:类似于`id`属性,但可以定义多个别名。例如,`...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
- id和name:id属性是Bean的标识符,name属性可以包含特殊字符,且可以有多个别名。 - class:用于指定Bean所对应的完整类名,Spring通过反射来创建该类的实例。 3. Bean的作用域: - singleton:默认的作用域,...
在Spring框架中,Bean是核心概念,它代表了应用程序中的对象。Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来管理这些Bean。在这个"Spring Bean简单应用实例"中,我们将...
在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式,以及不同类型的IOC容器。 **Spring的Bean配置**: 在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配...
在Spring框架中,`id`、`name`和`scope`是配置bean时常见的三个属性,它们对于理解和管理Bean的生命周期至关重要。今天我们将深入探讨这三个属性的含义、使用方法以及它们之间的顺序规则。 首先,`id`是Spring Bean...
在Spring框架中,Bean的属性注入是核心功能之一,它允许我们为Bean对象设置各种属性值,以便在应用运行时创建和配置完全初始化的对象。在本篇内容中,我们将深入探讨Spring如何处理Bean的属性注入,包括对象属性的...
这里,`myBean`是bean的ID,`com.example.MyClass`是bean对应的类,`name`属性则是bean的一个属性,被注入了值"Example Bean"。 **依赖注入(DI)** Spring的核心特性之一是依赖注入(Dependency Injection,简称DI...
在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...
然后在需要的地方,只需调用`BeanManager.getBean("beanId")`即可。 4. **在Web应用中启动** 在Web应用中,可以配置一个Servlet,在服务器启动时初始化ApplicationContext。在`web.xml`中定义Servlet,并在`init...
本文将详细解读标题“spring框架配置bean的高级属性”以及描述中的内容,并结合具体的示例XML配置文件来探讨Bean配置中的高级技巧。 #### 核心概念与应用场景 在描述中提到的`hibernate tools`是一种用于简化...
`ref` 属性指定了要注入的 Bean 的 ID。 **注解驱动的配置** 除了 XML 配置,Spring 也支持使用注解进行配置。这使得代码更加简洁且易于理解。我们可以在类上使用 `@Component` 注解声明一个 Bean,然后使用 `@...
在Spring框架中,Bean的属性注入是核心功能之一,它允许我们通过配置文件或注解来设置Bean实例的属性值,使得对象的初始化更加灵活。本文将深入探讨Spring中的"名称空间p",这是一种用于配置Bean属性注入的方式,...
从测试结果中,我们可以看到,Spring容器已经成功地将Bean的配置id传递给了setBeanName()方法,并将其保存在了beanName实例变量中。 在Spring框架中,获取Bean本身的id操作可以通过实现BeanNameAware接口来实现。...
Spring Bean 是 Spring 框架的核心概念,它代表了应用程序中的一个对象,这个对象可以被 Spring 容器管理,包括创建、初始化、装配、销毁等生命周期过程。在 Spring 中,Bean 定义是由 `BeanDefinition` 接口来表示...
在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和管理Bean,并利用Java的反射机制来实例化这些Bean。 首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些...
在Spring框架中,Bean的配置与管理是其核心功能之一,而通过`PropertyPlaceholderConfigurer`进行属性占位符的配置则是实现动态配置的关键技术。本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置...
Spring 中获取 Bean 的多种方式 在 Spring 框架中,获取 Bean 是一个非常重要的步骤,因为它是使用 Spring 框架的基础。Spring 提供了多种方式来获取 Bean,这些方式可以根据不同的应用场景选择使用。 通过 XML ...
这里的`autowire="byName"`指示Spring尝试找到一个名为`name`的Bean来自动装配到`Person`类的相应属性上。 Bean的继承是通过`parent`属性实现的,允许一个Bean继承另一个Bean的配置。这样可以重用和覆盖父Bean的...
当`autowire`属性设置为`byName`时,Spring会尝试根据属性名和bean的ID来自动匹配bean。这意味着如果有一个bean的ID与属性名相匹配,那么这个bean将会被注入到对应的属性中。例如: ```xml <bean id="date" class=...