关于Spring IOC (DI-依赖注入) 案例版

原文:https://blog.csdn.net/javazej...

自己做的demo:链接: https://pan.baidu.com/s/1GrNT... 提取码: jvbk

Bean的延长加载

在某些情况下,我们可能希望把bean的创建延迟到使用阶段,以免消耗不必要的内存,Spring也非常自愿地支持了延迟bean的初始化。因此可以在配置文件中定义bean的延迟加载,这样Spring容器将会延迟bean的创建直到真正需要时才创建。通常情况下,从一个已创建的bean引用另外一个bean,或者显示查找一个bean时会触发bean的创建即使配置了延迟属性,因此如果Spring容器在启动时创建了那些设为延长加载的bean实例,不必惊讶,可能那些延迟初始化的bean可能被注入到一个非延迟创建且作用域为singleton的bean。在xml文件中使用bean的lazy-init属性可以配置改bean是否延迟加载,如果需要配置整个xml文件的bean都延迟加载则使用defualt-lazy-init属性,请注意lazy-init属性会覆盖defualt-lazy-init属性。

http://www.springframework.or..."

xmlns:xsi=" http://www.w3.org/2001/XMLSch..."

xmlns:context=" http://www.springframework.or..."

xsi:schemaLocation="

http://www.springframework.or... http://www.springframework.or...

http://www.springframework.or...

http://www.springframework.or...

" default-lazy-init="true">

class="com.zejian.spring.springIoc.dao.impl.AccountDaoImpl"/>

请务必明确一点,默认情况下Spring容器在启动阶段就会创建bean,这个过程被称为预先bean初始化,这样是有好处的,可尽可能早发现配置错误,如配置文件的出现错别字或者某些bean还没有被定义却被注入等。当然如存在大量bean需要初始化,这可能引起spring容器启动缓慢,一些特定的bean可能只是某些场合需要而没必要在spring容器启动阶段就创建,这样的bean可能是Mybatis的SessionFactory或者Hibernate SessionFactory等,延迟加载它们会让Spring容器启动更轻松些,从而也减少没必要的内存消耗。

![20200715214614131.png][]

annotation-config

此属性等同于配置,默认就是true,也就是说,如果配置了context:component-scan其实就没有必要配置annotation-config 了。

本文来源于:宋文超super,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina),转载请注明出处。

你可能感兴趣的:(spring,java,程序员)