SPRING 架构分析

spring官网:spring.io/projects

  1. spring是一个资源整合框架 ,通过spring可以将很多资源整合在一起,例如:连接池、MyBatid等。
  2. 对外提供相关服务,比如:秒杀、支付等;
    在这里插入图片描述
    spirng中的IOC负责实现生命周期的管理和对象依赖关系的管理;

spring框架架构:

在这里插入图片描述

1.下图为容器初始化步骤图:

个人分析为:一个被@Component组件修饰的类,就会被交给spring进行管理,这也就是bean对象的创建;bean对象都会放在IOC容器里进行配置和存放bean,因为IOC里面有两个Map, 上面的Map意思为存放bean的配置信息(工厂原材料),下面的Map存放的为bean 的实例信息,(工厂中的成品对象),下面的实例对象创建之后会被放到BeanFactory里面,当外界调用时,就会在BeanFactory里面拿,如果没有,beanFactory就会在上图的map里面拿配置信息,配置的实例就又会存放到下图的map中,然后在传给BeanFactory;
在这里插入图片描述

2. springbean对象的命名

交给spring管理的对象,都会默认有一个别名,例如:DefaultCache,别名就是defaultCache,当然也可以自定义,例如@service(“ser”);

3. @Scope(作用域):

@Scope(“singleton”):默认的作用域,可以保证每次获取同一个对象地址时,只有一个对象;
@Scope(“prototype”):每次获取都产生新的对象,也因此现象,配置map就不会将实例放到实例bean pool中;

4. 通过@Autowired按属性类型从bean池中查找对象为其赋值时,如果有多个属性类型该如何处理(多个@Component修饰交给spring处理的实现类)?

如果有多个bean会报以下异常:

expected single matching bean but found 2:预期是一个bean,但是现在有两个
处理办法:在@Autowired下加上@Qualifier(“defaultCache”),表示指定bean的实现类;

5. 低、弱耦合与高耦合:

日常的项目开发中,类与类的调用,在spring中,一般是采用接口调用,接口下会有具体的实现类,外部调用时,直接调用接口(@Autowired:自动装配,DI注入);达到弱耦合;

下图为DI注入图和完整DI流程图:

在这里插入图片描述
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐