首页 > 其他分享 >Spring6 探析之@Lazy 注解

Spring6 探析之@Lazy 注解

时间:2023-05-27 21:34:29浏览次数:37  
标签:Lazy 创建 探析 注解 ElementType Spring6

Spring6 探析之@Lazy 注解

介绍

在实际项目中,如果我们加载了过多的实例或配置,会导致 Spring 的启动速度非常慢,@Lazy 注解就是为了解决这种问题。

@Lazy 注解采用懒汉模式的单例模式,Spring 容器启动时,被标记的实例不会创建,只有在第一次使用时才会创建实例,这样就解决了 Spring 启动慢的问题

我们先看一下 @Lazy 的源码:

@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Lazy {

	boolean value() default true;

}

@Lazy 可以作用在 类、方法、构造函数、字段、参数 上

  • value 属性:是否启动懒汉模式,默认为true

示例

这里之示例作用在方法上的 @Lazy,剩下的自行探索


首先创建一个 bean,为了能看到效果,在构造函数中输出了内容

image-20230527211559103

在配置类中使用 @Lazy 注解

image-20230527211646317

测试:

使用以下代码进行测试

image-20230527211710817

输出如下,可以看到,在在创建 IOC 容器时没有创建被@Lazy标记的bean,在使用的时候才创建

image-20230527211717422

标签:Lazy,创建,探析,注解,ElementType,Spring6
From: https://www.cnblogs.com/acdongla/p/17437391.html

相关文章

  • Spring6 探析之@Conditional 注解
    Spring6探析之@Conditional注解介绍我们写业务逻辑时,会用到if-else条件,@Conditional注解可以通过条件判断是否要将Bean注入到IOC容器中,它可以标记在类和方法上,我们先看一下源码吧@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME......
  • Spring6 探析之@PropertySource 注解
    Spring6探析之@PropertySource注解介绍@PropertySource注解用于加载配置类,在使用Spring时,我们可以使用@PropertySource注解将自定义的配置文件加载到Spring中,方便我们的自定义的开发下面是@PropertySource的源码@Target(ElementType.TYPE)@Retention(RetentionPol......
  • Spring6 探析之@Import 注解
    Spring6探析之@Import注解简介@Import注解与@Bean注解的作用相同,都可以将实例注册到IOC中,但区别是,@Import只能作用在类上,并且使用@Import时,不需要再使用@Configuration注解下面是@Import的源码@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documen......
  • Spring6 探析之@Bean 注解
    Spring6探析之@Bean注解介绍@Bean是spring的常用注解,他可以标记在方法和注解上,可以将方法的返回值放在IOC容器中,它又以下特点单例可指定bean的名称可控制bean的初始化与销毁方法让我们看一下@Bean的源码吧@Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE})......
  • Spring6 探析之@Configuration 注解
    Spring6探析之@Configuration注解介绍@Configuration注解大家都不陌生,该注解有以下特点必须在类上使用能够将被注解的类加载到IOC容器里能够将类中被@Bean注解标记的方法加载到IOC容器里@Configuration有一些参数,其中最值得关注的是proxyBeanMethods,该参数值默认为tr......
  • Kotlin中的lateinit、lazy
    lateinitlateinit关键字用来修饰一个类的非空成员变量,表示该成员变量的值在稍后合适的时机会初始化,例如:classTest{ lateinitvarname:String funtest(){ if(::name.isInitialized){ println("nameisinitialized") } println(name) }}在给lateinit......
  • Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-view
    AS版本:AndroidStudioBumblebee|2021.1.1Patch1Build#AI-211.7628.21.2111.8139111,builtonFebruary2,2022Runtimeversion:11.0.11+9-b60-7590822amd64VM:OpenJDK64-BitServerVMbyOracleCorporationWindows1010.0GC:G1YoungGeneration,G1OldGene......
  • Tomcat10依赖问题 jakarta.servlet-api 6.0.0 spring6.x.x
    org.springframework.web.servlet.DispatcherServlet’isnotassignabletojavax.servlet.Servlet1、pom.xml配置<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifact......
  • 架构师日记-从数据库发展历程到数据结构设计探析
    作者:京东零售刘慧卿一数据库发展史起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代,关系数据库理论的提出,以表格形式组织数据,数据之间存在关联关系,具有了良好......
  • vue2使用图片懒加载之vue-lazyload
    1.为什么要进行图片懒加载呢?使用图片懒加载的主要原因是为了优化网站或应用程序的性能和用户体验。当页面中存在大量图片时,如果一次性全部加载会影响页面的加载速度,用户可能需要等待很长时间才能看到完整的页面内容,这会影响用户的体验和满意度。2.如何实现图片懒加载使用http......