您的位置:首页 > 文旅 > 美景 > 电商运营怎么做的_2022年互联网公司排名_seo的特点是什么_惠州百度seo排名

电商运营怎么做的_2022年互联网公司排名_seo的特点是什么_惠州百度seo排名

2025/2/23 10:28:53 来源:https://blog.csdn.net/qq_62097431/article/details/143408463  浏览:    关键词:电商运营怎么做的_2022年互联网公司排名_seo的特点是什么_惠州百度seo排名
电商运营怎么做的_2022年互联网公司排名_seo的特点是什么_惠州百度seo排名

Spring中lazy-init属性

1. 在 Spring 框架中的 lazy-init 属性

在 Spring 框架中,lazy-init 属性主要用于控制 Spring 容器中 Bean 的初始化时机。

含义: 当一个 Bean 被定义在 Spring 的配置文件(可以是 XML 配置或者基于注解的配置等效场景)中时,通过设置 lazy-init 属性,可以指定这个 Bean 是在 Spring 容器启动时就立即初始化,还是等到第一次被使用时才进行初始化。

取值及作用

  • false(默认值,在某些早期版本中可能是 true,但现在普遍默认 false:当 lazy-init="false" 时,意味着在 Spring 容器启动过程中,一旦解析到该 Bean 的定义,就会立即对其进行初始化操作。初始化操作包括创建 Bean 的实例、执行依赖注入(如果有)、调用初始化方法(如果配置了)等一系列步骤。例如,对于一个数据库连接池的 Bean,如果设置为 false,那么在容器启动时就会提前创建好连接池实例,准备好供后续业务使用。

  • true:若 lazy-init="true",则该 Bean 不会在 Spring 容器启动时初始化。而是等到应用程序中第一次真正需要使用这个 Bean 时,Spring 容器才会对其进行初始化操作。比如,有一个用于处理特定业务逻辑且使用频率不高的 Bean,设置为 lazy-init="true" 后,就可以节省容器启动时不必要的资源消耗和初始化时间,只有当该业务逻辑真正被触发需要这个 Bean 时,它才会被初始化并投入使用。

2. 代码控制
基于 XML 配置方式

在传统的 XML 配置文件中,可以在<bean>元素里设置lazy-init属性来控制 Bean 的初始化时机。

示例如下:

 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.springframework.org/schema/xsi"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsi">​<!-- 定义一个普通的Bean,设置为立即初始化(默认情况) --><bean id="normalBean" class="com.example.demo.NormalBean"><!-- 这里可以设置其他属性和依赖注入等 --></bean>​<!-- 定义一个延迟初始化的Bean --><bean id="lazyInitBean" class="com.example.demo.LazyInitBean" lazy-init="true"><!-- 同样可以设置其他属性和依赖注入等 --></bean>​</beans>

在上述示例中:

  • normalBean 没有显式设置 lazy-init 属性,所以它会按照默认情况(在 Spring 版本较新时默认值为 false,即立即初始化)在 Spring 容器启动时就进行初始化。

  • lazyInitBean 则通过设置 lazy-init="true",会在容器启动时不进行初始化,而是等到第一次被使用时才进行初始化。

基于注解配置方式

Spring 也提供了注解来实现类似的功能,常用的注解有 @Component@Service@Repository@Controller 等,这些注解用于标识不同类型的组件(类),可以结合 @Lazy 注解来控制 lazy-init 属性。

示例如下:

 package com.example.demo;​import org.springframework.context.annotation.Component;import org.springframework.context.annotation.Lazy;​// 这是一个普通的组件类,默认会在容器启动时初始化@Componentpublic class NormalComponent {// 类的内部实现}​// 这是一个延迟初始化的组件类@Component@Lazy(true)public class LazyComponent {// 类的内部实现}

在上述示例中:

  • NormalComponent 类只使用了 @Component 注解,它会按照默认情况(类似于 XML 配置中的默认 lazy-init="false")在容器启动时就被初始化。

  • LazyComponent 类除了使用 @Component 注解标识自己是一个组件外,还使用了 @Lazy(true) 注解,这就相当于设置了 lazy-init="true",使得该类在 Spring 容器启动时不会被初始化,而是等到第一次被使用时才进行初始化。

另外,如果是在 Spring Boot 项目中,很多时候会使用 @SpringBootApplication 启动类注解来自动扫描组件。上述的基于注解的配置方式同样适用,只要在需要延迟初始化的类上添加相应的注解即可。

基于 Java 配置类方式

除了 XML 和注解配置外,还可以通过 Java 配置类来设置 lazy-init 属性。

首先创建一个 Java 配置类:

 package com.example.demo;​import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Lazy;​@Configurationpublic class AppConfig {​// 定义一个立即初始化的Bean@Beanpublic NormalBean normalBean() {return new NormalBean();}​// 定义一个延迟初始化的Bean@Bean@Lazy(true)public LazyBean lazyBean() {return new LazyBean();}}

在上述示例中:

  • normalBean() 方法定义了一个普通的 Bean,它会按照默认情况(类似于 XML 配置中的默认 lazy-init="false")在容器启动时就被初始化。

  • lazyBean() 方法定义了一个延迟初始化的 Bean,通过添加 @Lazy(true) 注解,相当于设置了 lazy-init="true",使得该 Bean 在容器启动时不会被初始化,而是等到第一次被使用时才进行初始化。

通过以上几种方式,就可以在 Spring 框架中根据具体需求在代码中灵活控制 lazy-init 属性,以达到优化资源利用和提升应用性能的目的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com