前言
作为一个写Java的程序员,应该不太可能没听过Spring。对开发者来说,Spring就像是哆啦A梦的口袋。无论需要什么道具,都可以从口袋里直接拿出来,而不用关心这些道具来自哪里。
本篇主要记录一些关于Spring的基础知识,「用于快速查找和回顾」,「不适合作为Spring的入门学习」(头铁的旁友随意)。
核心
Spring的两大核心当属「IOC」和「AOP」。
IOC
IOC是控制反转(「I」nversion 「O」f 「C」ontrol),IOC是一种「编程思想」。Spring的IOC容器实现了IOC,是Spring框架的基本功能,管理着Spring应用中bean的「创建」、「配置」和「管理」。Spring的IOC容器接管了应用中的bean,能够自动解决bean与bean之间的依赖。
❝
传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转。因此反转是指:依赖对象的获取被反转了。
❞
IOC容器对使用者来说就像是一个黑盒,不需要关心bean之间的依赖是怎样的,大大减少了编程的难度。
IOC的实现方式有两种:「依赖注入」(Dependency Injection,DI)和「依赖查找」(Dependency Lookup,DL)
- 依赖注入:应用程序被动的接收对象,bean实例化的时候,IOC容器会自动根据类型或者名称,把依赖的其他bean注入给当前bean。依赖注入的方式主要有以下四种:
- 「注解」:通过注解来让IOC容器注入所依赖类型的对象,例如最常用的@Autowired。
- 「构造方法」:实现对应参数的构造方法,在创建对象时来让IOC容器注入所依赖类型的对象。
- 「setter方法」:实现对应属性的setter方法,来让IOC容器注入所依赖类型的对象。
- 「接口」:实现特定接口以,让IOC容器注入所依赖类型的对象。
- 「依赖查找」:依赖查找是容器中的对象,通过容器的API,来查找自己所依赖的资源和对象。相比于「依赖注入」,「依赖查找」是一种更加主动的方式。
类型依赖处理实现便利性代码侵入性API依赖性可读性「依赖查找」主动获取相对繁琐侵入业务逻辑依赖容器API良好「依赖注入」被动提供相对便利低侵入性不依赖容器API一般
AOP
AOP(「A」spect-「O」riented