关于Spring IOC (DI-依赖注入),你需要知道的 案例版

原文: [https://blog.csdn.net/javazejian/article/details/54561302][https_blog.csdn.net_javazejian_article_details_54561302]

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

![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ppa3VpY3VpNzQwMg_size_16_color_FFFFFF_t_70][]

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属性。

xmlns:xsi=" [http://www.w3.org/2001/XMLSchema-instance][http_www.w3.org_2001_XMLSchema-instance]"

xmlns:context=" [http://www.springframework.org/schema/context][http_www.springframework.org_schema_context]"

xsi:schemaLocation="

[http://www.springframework.org/schema/beans][http_www.springframework.org_schema_beans] [http://www.springframework.org/schema/beans/spring-beans.xsd][http_www.springframework.org_schema_beans_spring-beans.xsd]

[http://www.springframework.org/schema/context][http_www.springframework.org_schema_context]

[http://www.springframework.org/schema/context/spring-context.xsd][http_www.springframework.org_schema_context_spring-context.xsd]

" 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 IOC (DI-依赖注入),你需要知道的 案例版)