Skip to main content
控制翻转 (IoC)、依赖注入 (DI) 和面向切面编程 (AOP)

控制翻转 (IoC)、依赖注入 (DI) 和面向切面编程 (AOP)

IOC和DI

IOC是指在程序开发过程中,对象实例的创建不再由调用者管理,而是由Spring容器创建,Spring容器会负责控制程序之间的关系,而不是由代码直接控制,因此,控制权由程序代码转移到了Spring容器,控制权发生了反转,即控制反转。

而DI依赖注入其实和控制翻转是同一种开发模式的一体两面,由Spring容器对各个Bean的依赖进行注入。

Spring IOC提供了两种IOC容器,分别是BeanFactory和ApplicationContext。


Yujie LiuAbout 2 minComputer ScienceBackend DevelopmentSpringboot
Bean的生命周期

Bean的生命周期

Bean 的生命周期概括起来就是 4 个阶段

  1. 实例化(Instantiation):第 1 步,实例化一个 bean 对象;

  2. 属性赋值(Populate):第 2 步,为 bean 设置相关属性和依赖;

  3. 初始化(Initialization):第 3~7 步,步骤较多,其中第 5、6 步为初始化操作,第 3、4 步为在初始化前执行,第 7 步在初始化后执行,该阶段结束,才能被用户使用;

  4. 销毁(Destruction):第 8~10步,第8步不是真正意义上的销毁(还没使用呢),而是先在使用前注册了销毁的相关调用接口,为了后面第9、10步真正销毁 bean 时再执行相应的方法。


Yujie LiuAbout 2 minComputer ScienceBackend DevelopmentSpringboot
@Resource和@Autowired与@Qualifier

@Resource和@Autowired与@Qualifier

  • @Resource和@Autowired都是做bean的注入时使用

  • @Resource不是Spring中的注解,但是Spring支持该注解,而@Autowired是Spring的注解

  • @Autowired是按照类型(byType)来装配Bean的,不会去匹配name,默认情况下他要求依赖对象必须存在,如果需允许null,可以设置它的required属性为false,如果想让@Autowired按照名称(byName)来装配,则需要配合@Qualifier一起使用,Bean的实例名称由@qualifier注解的value参数指定

  • @Resource同时有name、type属性,Spring将name属性解析为Bean实例名称,将type属性解析为Bean的梳理类型。Spring先按照Bean实例名称装配,如果不能装配,则按照Bean的类型进行装配,如果都不能匹配,抛出NoSuchBeanDefinitionException异常。


Yujie LiuLess than 1 minuteComputer ScienceBackend DevelopmentSpringboot
Springboot 四大组件

Springboot 四大组件

四大组件分别是:Starter, AutoConfigurator, CLI 以及 Actuator.

Starters

  • 官方提供的starter是这样的:spring-boot-starter-xxx
  • 非官方的starter是这样的:xxx-spring-boot-starter

通过在pom表引入starter,我们同时引入了其所需的相关依赖和自动配置的文件,同时我们也可以通过yml文件对其进行配置。


Yujie LiuAbout 1 minComputer ScienceBackend DevelopmentSpringboot