SpringBean的配置详解
发布网友
发布时间:2024-09-25 16:36
我来回答
共1个回答
热心网友
时间:2024-09-30 03:49
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的扩展点方式。