SpringBean的配置详解

如题所述

第1个回答  2024-08-17
SpringBean的配置详解

Spring开发中,核心在于Bean的配置,接下来,我们将对Bean的常用配置进行深入讲解。

首先,我们来了解Bean的基础配置。例如,配置UserDaoImpl由Spring容器负责管理,此时,Spring容器(singleObjects单例池)中存储的Bean的beanName为userDao,值为UserDaoImpl对象,通过beanName即可获取Bean实例。如果未配置id,Spring会自动将当前Bean实例的全限定名作为beanName。

接下来,是Bean的别名配置。可以为当前Bean指定多个别名,通过别名同样可以获取到Bean对象。此时,多个名称均能获取到UserDaoImpl实例对象。

Bean的范围配置是关键。默认情况下,Spring环境中的Bean作用范围分为两种:Singleton和Prototype。当Scope设置为singleton时,获取两次对象的打印结果一致,观察断点调试,可以发现单例池中存在userDao实例。相反,当scope设置为prototype时,获取两次对象的打印结果不一致,进一步验证了不同作用范围的特性。

Bean的延迟加载也值得特别关注。当lazy-init设置为true时,即为延迟加载,Spring容器在创建时不会立即创建Bean实例,而是等到真正使用时才创建并存储到单例池中,之后直接从单例池获取即可。本质上,该Bean仍然保持单例状态。

在Bean的初始化和销毁方法配置方面,Bean在被实例化后,可以执行指定的初始化方法完成初始化操作,而在销毁之前,也可以执行指定的销毁方法完成清理操作。此外,还可以通过实现InitializingBean接口,完成更精细的初始化操作。

Spring的实例化方式主要分为两种:构造方式实例化和工厂方式实例化。构造方式实例化包括无参构造方法实例化和有参构造方法实例化,几乎所有的实例化都是通过无参构造方式完成。有参构造方法实例化则需要参数的注入,通过标签嵌入在标签内部提供构造参数。工厂方式实例化包括静态工厂方法实例化和实例工厂方法,前者定义工厂类,提供静态方法生产Bean实例,后者则需要先有工厂对象,再通过工厂对象调用非静态方法实例化。

Bean的依赖注入配置也是关键点之一。依赖注入有ref和value两种方式,ref用于引用其他Bean的id,value用于注入普通属性值。依赖注入的数据类型包括注入List集合、Set集合、Map集合、Properties键值对等。此外,自动装配方式可以简化注入过程,通过在标签中配置autowire属性,根据属性值选择自动注入方式。

在Spring的标签配置中,我们主要关注两类标签:默认标签和自定义标签。默认标签使用Spring的默认命名空间约束,其中标签除了作为根标签外,还可以嵌套在根标签内,通过profile属性切换开发环境。标签用于导入其他配置文件,便于项目管理。标签则用于为某个Bean添加别名,与在标签上使用name属性的方式相似。自定义标签需要引入外部命名空间,并指定前缀,解析流程遵循Spring的扩展点方式。

SpringBean的配置详解
SpringBean的配置详解 Spring开发中,核心在于Bean的配置,接下来,我们将对Bean的常用配置进行深入讲解。首先,我们来了解Bean的基础配置。例如,配置UserDaoImpl由Spring容器负责管理,此时,Spring容器(singleObjects单例池)中存储的Bean的beanName为userDao,值为UserDaoImpl对象,通过beanName即可获取Bean...

Spring(3)——装配 Spring Bean 详解
Spring (3) - Spring Bean 装配详解 在Spring IoC容器中管理Bean是至关重要的。装配Bean的方法有多种,包括隐式发现、接口\/类配置和XML配置。优先级上,隐式装配基于约定优于配置的原则,是最优选择。如果自动装配不可用,Java接口和类配置是其次,只有在不得已时才使用XML配置。XML配置Bean时,需要...

Spring(3)——装配 Spring Bean 详解
首先,隐式装配是首选,通过约定优于配置的原则,Spring自动识别和装配Bean。其次,当自动装配不可用时,可以使用Java接口或类的配置。只有在前两者都不可行时,才考虑使用繁琐的XML配置。XML配置Bean时,需要引入XSD文件定义元素,如简单配置如:<bean id="c" class="pojo.Category"\/>。复杂情况下,可...

spring配置bean实例化有哪些方式
单实例作用域,这是Spring容器默认的作用域,使用singleton作用域生成的是单实例,在整个Bean容器中仅保留一个实例对象供所有调用者共享引用。单例模式对于那些无会话状态的Bean(如辅助工具类、DAO组件、业务逻辑组件等)是最理想的选择。prototype 原型模式,这是多实例作用域,针对每次不同的请求,Bean容器...

Spring创建bean详解--实例化bean
首先,进入createBean的入口,需要参考Spring的初始化单例池的相关内容。接下来,确认当前的bean定义已经解析了class,并复制当前的bean定义,这一步骤在AbstractAutowireCapableBeanFactory.createBean方法中执行。在实例化bean之前,会执行实现了InstantiationAwareBeanPostProcessor接口的postProcessBeforeInstantiation...

详解Spring中Bean的作用域与生命周期
request:在HTTP请求中创建实例,确保每次请求都有一个独立的实例。session:在HTTP会话中创建实例,确保每个会话都有一个独立的实例。理解并正确配置Bean的作用域有助于优化应用性能,避免不必要的实例创建和资源浪费。Bean的生命周期管理是Spring框架中另一个关键概念。从创建到销毁,Spring提供了灵活的方式...

spring实例化bean的三种方式(springbean实例化和初始化)
spring配置bean实例化有哪些方式1、Springboot启动类:并通过@EnableConfigurationProperties指定可以使用properites来实例化bean的对象类型。2、是的,Spring管理Bean的方法就是修汽车的方式。3、如果我没记错的话,spring的单例模式容器一加载的时候就被实例化,zd比如配置struts的filter,当然在配置action的bean...

springbean生命周期详解
1、BeanNameAware该接口只有一个方法setBeanName(String name),用来获取bean的 id或者name。2、BeanFactoryAware该接口只有一个方法setBeanFactory(BeanFactory beanFactory),用来获取 当前环境中的BeanFactory。3、ApplicationContextAware该接口只有一个方法setApplicationContext(ApplicationContext applicationContext),...

Spring BeanDefinition详解
BeanDefinition是Spring用于定义Bean配置元信息的接口,包含了创建Bean的核心流程:Spring加载指定的Java类将其转化为BeanDefinition对象,之后根据此对象创建Bean。BeanDefinition从继承体系来看,继承了AttributeAccessor和BeanMetadataElement两个接口,进一步扩展了AnnotatedBeanDefinition和AbstractBeanDefinition。其中,...

springbean是什么?
Spring Bean是Spring框架中的核心组件,由Spring容器负责管理。容器根据配置信息或注解创建并配置Bean对象。配置信息可以采用XML配置文件、Java配置类或基于注解的方式定义。配置内容包括Bean的类型、属性值和依赖关系。Spring容器实例化Bean对象并将其放入容器中。容器管理Bean的生命周期,包括初始化、依赖注入、...

相似回答
大家正在搜