7.5.3:配置依赖

前端之家收集整理的这篇文章主要介绍了7.5.3:配置依赖前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Bean的 依赖注入 通常表现为如下两种形式:

属性:通过<property.../>元素配置,对应设值注入。

② 构造器参数:通过<constructor-arg.../>元素指定,对应构造注入。

通常情况下,Spring在实例化容器时,会校验beanfactory中每一个Bean的配置,这些校验包括

① Bean引用的依赖Bean是否指向一个合法的Bean。

② Bean的普通属性值是否获得了一个有效值。

对于singleton作用域的Bean,如果没有强行取消其预初始化行为,系统会在创建Spring容器时预初始化所有singleton Bean,与此同时,该Bean所依赖的Bean也被一起实例化。

beanfactory与ApplicationContext实例化容器中Bean的时机不同:前者等到程序需要Bean实例时才创建Bean,而后者在容器创建ApplicationContext实例时,会预初始化容器中的全部Bean。

注意:

因为采用ApplicationContext作为Spring容器,创建容器时会同时创建容器中所有singleton作用域Bean,因此可能需要更多的系统开销。但一旦创建成功,应用后面的响应速度更快。因此对于普通的JavaEE应用,推荐使用ApplicationContext作为Spring容器。
创建beanfactory时不会立即创建Bean实例,所以有可能程序可以正确地创建beanfactory实例,但当请求Bean实例时依然抛出一个异常:创建Bean实例或注入它的依赖关系时出现错误。配置错误的延迟出现,也会给系统引入不安全因素,而ApplicationContext则默认预实例化所有singleton作用域Bean,所以ApplicationContext实例化过程比beanfactory实例化过程的时间和内存开销大,但是可以在容器初始化阶段就检验出配置错误

实际上,Spring允许为singleton作用域的Bean指定lazy-init=“true”,该属性将改变singleton Bean实例的默认行为,强制取消该Bean实例预初始化。

Spring可以为任何Java对象注入任何类型的属性------只要该Java对象为该属性提供了对应的setter方法即可。

由于Java实例的属性值可以是各种数据类型,除了基本类型、字符串类型等,还可以是其他Java实例,也可以是容器中其他Bean的实例,甚至是Java集合、数组等,所以Spring允许通过如下元素为Bean实例的属性指定值:

① value:用于指定字符串类型,基本类型的属性值。

② ref:属性值是容器中的另一个Bean实例。

③ bean:注入嵌套Bean。

④ list、set、map和props:注入集合值。

原文链接:https://www.f2er.com/javaschema/286134.html

猜你在找的设计模式相关文章