Spring体系学习感想

​ 最近在学习Java体系的一些框架,先把SSM先学一遍吧,不得不说经典的Java体系带给我的冲击还是比较大的,这里不记录框架的一些实现细节,那些都记录在笔记里面了,这里记录学习 Spring 体系的一些核心思想和思维吧。

SpringFramework

SpringFramework主要是两个最重要的编程思想:

  • IoC 控制反转
  • AOP 面向切面编程

先说这些编程思想的出现要解决的问题:解耦

将我们庞大的工程分层,让每一层专注于解决自己的问题,这也是软件工程思想架构的思维,非常非常重要。

IoC

这是最重要的思想,完全颠覆了Java开发的思想。

简单来说,就是使用一个容器来完成对所有bean对象的管理。

这里使用了工厂模式的设计思维。

将我们需要使用到的bean对象都交给Spring框架来管理,我们对于Bean对象的获取,注入等操作都借助框架,通过 Dependency Injection 依赖注入来注入到每个需要的对象中。

我们通过 XML 或者 注解的方式能够很简单的获取我们所需要的对象,Spring框架会为我们注入到每个需要的对象中。

理解IoC最好的方式还是我们可以自己简单的实现一个 IoC 的框架,从而能够理解 IoC。

AOP

这是一种编程思维,而不是仅仅针对Java或Spring的框架。

AOP的出现让每一层能够专注于实现自己的功能,而那些通用的、贯穿整个开发的内容:例如日志、事务安全等可以使用专门的一层来实现,而不必将整个业务层的代码变得冗余繁杂。

在 Java 体系中,我们主要是通过动态代理来进行 AOP 的实现。

为什么动态代理这么强大?这是因为我们通过反射,在运行中创建对象。

这是因为 Java中,动态代理字节码随用随创建,随用随加载,从而在不修改源码的基础上对方法增强。

主要有两种方式:

  • 通过原生的 Proxy 类来生成代理对象从而完成通用的任务
  • 通过 cglib 的 Enhancer 来实现代理对象从而完成动态代理

理解 AOP 最好的方式还是我们可以自己简单的实现一个 AOP 的框架,从而能够理解 AOP。