框架源码专题-Spring-9、@Lazy
1. 源码流程图
https://www.processon.com/diagraming/63fad8c81c6b02464eef690a
2. BD 中设置属性
2.1. 使用方法
2.1.1. @Component 类上加上@Lazy 注解
1 |
|
2.1.2. 在@Configuration 类中配置@Bean 时添加@Lazy 注解
1 |
|
2.1.3. @ComponentScan 配置延迟加载
使用包扫描的配置方式如下:
1 |
|
2.2. 设置时机⭐️🔴
❕ ^cqh37t
当使用 2.1 三种配置后,Spring 在扫描加载 Bean 时会读取@Lazy 和@Component 注解相应值,并设置 Bean 定义的 lazyInit 属性。读取注解配置时最终会调用 ClassPathBeanDefinitionScanner
及其子类实现的 doScan 方法,在这个方法中完成注解的读取配置。
https://www.processon.com/diagraming/63dd8eb4b59543238fa3a6a5
3. @Lazy 生效⭐️🔴
❕ ^50mrkk
https://www.processon.com/diagraming/63fad8c81c6b02464eef690a
4. 总结
从上面的例子我们可以总结及延伸出两个注意点:
- 非延迟加载的类中不能自动注入延迟加载的类,会导致延迟加载失效;
- 如果想要实现某个类延迟加载使用自动注入功能时需要调用链前都不存在非延迟加载类,否则延迟加载失效。
5. 实战经验
6. 参考与感谢
https://blog.csdn.net/Peelarmy/article/details/107339547
https://blog.csdn.net/wang489687009/article/details/120577472
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Taylor!
评论