缺省情况下,在
关于延迟加载
spring中,所有指定的bean及其从属项目将在启动APP应用程序时初始化容器上下文的创建。 测试代码如下所示。@Slf4j
@Configuration
公共类演示配置
公共演示配置(
log.warn (演示配置已初始化);
}
{1}启动APP日志:
主要主机:初始化排版软件应用程序上下文
主w.s.c.servletwebserverapplicationcontext :远程应用程序上下文3360初始化集成1193毫秒
主] c.p.c .全球. lazy.config .演示配置:演示配置已初始化
主[美国航空运输委员会] threadpooltaskexecutor 3360初始化执行官服务'
主-嵌入式- Tomcat web服务器3360 tomcatstartedonport (s ) 33608080 http )带上下文路径
典型的程序在启动时需要初始化许多Bean,如初始化数据源、初始化缓存等,因此APP启动非常缓慢。 在spring boot 2.2之前的版本中,通过向这些bean手动添加“@Lazy”注释,在启动时未进行初始化,业务流程根据需要进行了初始化。 上述代码更改如下。
@Lazy
@Configuration
publicclassdemoconfig { }
为什么需要全局懒加载
同上,表示需要向bean手动添加“@Lazy”注释。 也就是说,只能添加到程序中自己实现的bean中。 但是,目前在spring boot APP应用程序中部署了许多第三方启动程序。 例如,默认情况下,如druid-spring-boot-starter数据源注入、spring-boot-starter-data-redis缓存等,引入或添加相关beanspring boot 2.2中添加了全局懒惰加载属性。 启用后,全局bean将设置为懒惰加载,并根据需要创建spring:
主:
lazy-initialization: true #缺省的假可以通过设置“@lazy(false )”来排除单个bean,并且可以设置为在启动时加载@lazy ) false )
@Configuration
公共类演示配置当然也可以指定规则实现lazyinitializationexcludefilter规则实现排除@Bean
lazyinitializationexcludefilterintegrationlazyinitexcludefilter () {
returnlazyinitializationexcludefilter.forbeantypes (演示配置.类);
}
全局懒加载的问题
通过设置全局懒惰加载,可以减少启动时的创建任务,从而大大缩短APP的启动时间。 但是,全球怠路的缺点可以归纳为以下两点。Http请求的处理时间变长。 这里准确地说,第一次的http请求的处理时间变长,之后的请求不受影响(说到这里自然会涉及到spring cloud启动后的第一次调用超时问题)。 错误在启动APP时不会抛出,不利于早发现、早解决、早下班。
总结
。
作者:冷冷zz链接: https://juejin.im/post/5f0f 8341 E51 d 453495701 d 22