Spring基础
设计模式
Spring 框架里面确实用了很多设计模式
工厂模式 (管理 Bean)、单例模式 (IOC)、代理模式 (AOP)
模版模式、观察者模式
涉及:
- 工厂模式
- BeanFactory 就是一个典型的工厂,它负责创建和管理所有的 Bean 对象
- 我们平时用的 ApplicationContext 其实也是 BeanFactory 的一个实现
- 当我们通过 @Autowired 获取一个 Bean 的时候,底层就是通过工厂模式来创建和获取对象的。
- 单例模式
- 单例模式也是 Spring 的默认行为。默认情况下,Spring 容器中的 Bean 都是单例的,整个应用中只会有一个实例
- 这样可以节省内存,提高性能。当然我们也可以通过 @Scope 注解来改变 Bean 的作用域,比如设置为 prototype 就是每次获取都创建新实例。
- 代理模式
- 代理模式在 AOP 中用得特别多。Spring AOP 的底层实现就是基于动态代理的,对于实现了接口的类用 JDK 动态代理,没有实现接口的类用 CGLIB 代理。比如我们用 @Transactional 注解的时候,Spring 会为我们的类创建一个代理对象,在方法执行前后添加事务处理逻辑。
- 模版模式
- 模板方法模式在 Spring 里也很常见,比如 JdbcTemplate。它定义了数据库操作的基本流程:获取连接、执行 SQL、处理结果、关闭连接,但是具体的 SQL 语句和结果处理逻辑由我们来实现。
- 观察者模式
- 观察者模式在 Spring 的事件机制中有所体现。我们可以通过 ApplicationEvent 和 ApplicationListener 来实现事件的发布和监听。比如用户注册成功后,我们可以发布一个用户注册事件,然后有多个监听器来处理后续的业务逻辑,比如发送邮件、记录日志等。
- 适配器模式
- 策略模式
大约 13 分钟
