xuchengsheng / spring-reading

涵盖了 Spring 框架的核心概念和关键功能,包括控制反转(IOC)容器的使用,面向切面编程(AOP)的原理与实践,事务管理的方式与实现,Spring MVC 的流程与控制器工作机制,以及 Spring 中数据访问、安全、Boot 自动配置等方面的深入研究。此外,它还包含了 Spring 事件机制的应用、高级主题如缓存抽象和响应式编程,以及对 Spring 源码的编程风格与设计模式的深入探讨。
https://blog.csdn.net/duzhuang2399
MIT License
8.29k stars 984 forks source link

spirngIoc文章的疑问点 #5

Open Thw841277862 opened 1 year ago

Thw841277862 commented 1 year ago

作者你好,对于SpringIoc这篇文章中发现个别错误问题以及个人疑问: 1.最佳实践模块中MyServiceB类定义了,应该是A和B 2.时序图的布局是否可以优化下,比如点击图片显示一个弹出层这样方便查看。现在的图片操作样式不方便阅读 3.MergedBeanDefinitionPostProcessor 这个合并处理器的用途是啥?一般什么场景下会用到这个? 4.为什么推荐使用@PostConstruct和@PreDestroy注解来做bean的初始化和销毁操作而不是init-method和destroy-method属性,它两不应该是同一套实现机制吗?

xuchengsheng commented 1 year ago

1.最佳实践模块中MyServiceB类定义了,应该是A和B

已解决此问题

2.时序图的布局是否可以优化下,比如点击图片显示一个弹出层这样方便查看。现在的图片操作样式不方便阅读

其实这不是图片,这是markdown中的sequenceDiagram语法,你可以点击右上方的<-->图标进行放大查看,并且可以点击又下脚的几个移动按钮查看。

3.MergedBeanDefinitionPostProcessor 这个合并处理器的用途是啥?一般什么场景下会用到这个?

主要用途是元数据收集与预处理,比如:org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDefinition类中的对@Autowired注解,@Value注解进行了元数据收集工作。又比如org.springframework.context.annotation.CommonAnnotationBeanPostProcessor#postProcessMergedBeanDefinition类中对@PostConstruct,@PreDestroy进行了元数据收集工作。

常见应用场景:AOP,自定义注解处理,事务管理

4.为什么推荐使用@PostConstruct和@PreDestroy注解来做bean的初始化和销毁操作而不是init-method和destroy-method属性,它两不应该是同一套实现机制吗?

@PostConstruct和@PreDestroy是JSR-250标准的一部分,这意味着它们不仅仅是Spring特定的,而是Java EE标准的一部分。使用这些注解可以使代码与容器无关,提高代码的可移植性。

具体请查看 @PostConstruct:https://github.com/xuchengsheng/spring-reading/tree/master/spring-jsr/spring-jsr250-postConstruct @PreDestroy:https://github.com/xuchengsheng/spring-reading/tree/master/spring-jsr/spring-jsr250-preDestroy