spring框架的ioc和aop
spring框架,主要思想可以用spring容器来理解
aop是一种对oop进行补充的软件设计思想,将和核心功能不相关代码抽象出来,由其他类完成,aop应该是和oop一样层次的编程思想。比如Singer类,我们可以定义一个SingerPrepare;DI将要使用的对象的创建工作交给框架,减少对象之间的耦合性。
关键字:解耦
这是一个观察者模式,框架应该负责切面相关的工作。
public class SingerPrepare{ public void singBefore(){ // 通知观众入场等 } public void singAfter(){ // 通知观众出场等 }
} public class Singer{ private SingerPrepare singerPrepare; // 被通知对象 public Singer(){ // this.singPrepare= new SingPrepare();这个对象由使用者创建,很难由其他对象使用,耦合度很高 } public Singer(SingPrepare singPrepare){ //构造器只负责传入对象,至于是谁创建的,使用者不关心。 this.singPrepare =this.singPrepare; } public void sing(){ singPrepare.singBefore(); //唱歌行为 singPrepare.singAfter(); }
那么注入的SingerPrepare对象是怎么创建的呢?是Spring使用new创建的,但是这样似乎针对每一个对象都要这样,是不能实现框架的自动化。那么当代码中又注解
@Autowired,Spring是怎么处理的?Spring是能根据这个名字读到其类文件的,就是使用了java语言本身的反射特性.
参考资料:<<spring in acation>>
日进有功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义