spring的一些总结

spring是什么?

  • spring是一个框架,是一个容器,更是一个生态。它是一个开源的框架,为企业的开发而生,能够简化开发,提高效率。Spring的核心是AOP和IoC,运用这两种编程思想去管理项目的生命周期。

AOP是什么?

  • AOP是spring的核心之一,叫做面向切面编程,是一种编程思想。AOP能降低我们业务代码的耦合,提高复用。利用它能把业务中重复的部分提取出来封装成模块,称之为切面,注入到我们的目标对象中去。它能在不修改业务逻辑的前提下对我们代码进行增强。AOP有两种代理方式:JDK代理,运行时创建接口代理实例;cglib代理,运行时创建子类代理实例。AOP使用的主要场景是日志和权限。

AOP的基本概念

  1. aspect 切面  通常是一个类,里面可以定义切入点和通知
  2. joinpoint 连接点 执行过程中明确的点,一般是方法的调用
  3. pointcut 切入点  带通知的连接点,通常是切入点表达式
  4. advice 通知 增强方法

5种通知增强方法:

  1. Before 前置通知
  2. After 后置通知(不管有没有异常)
  3. AfterReturning 返回通知
  4. AfterThrowing 异常通知
  5. Around 环绕通知

IoC是什么

  • IoC是spring的核心之一,叫做控制反转,是一种编程思想。spring通过注解或者xml的方式,将类交给spring控制。spring将类转化为beandefinition对象,交由beanfactory去实现。bean的生命周期由spring去管理。  

Spring执行流程

  1. 执行web.xml中的ContextLoaderListener监听器
  2. 初始化ContextLoaderListener中的ContextInitialized方法
  3. ContextInitialized方法会调用父类ContextLoader的InitwebapplicationContext方法
  4. InitwebapplicationContext执行了以下任务:创建WebApplication容器,初始化需要的Bean,加载配置文件

spring和springboot的区别

本质:springboot的本质就是spring,能帮我们完成一些配置。springboot不提供spring的核心功能,只是作为spring的“脚手架”。springboot“习惯优于配置”能让项目很快启动起来。

优点:自动配置,提供主流框架的配置集成,不用依赖servlet容器运行,提供项目监控

核心功能:自动配置 针对spring项目,springboot提供了很多自动配置

                  起步依赖 提供起步依赖给项目的依赖管理提供帮助

                  项目监控 能够检测运行的项目

bean的生命周期(bean从创建到销毁的过程中spring都做了什么?)

  1. 处理别名,检查缓存
    1. 三级缓存       
      1. singletonObjects是一级缓存,放单例成本对象
      2. singletonFactories是三级缓存,放单例工厂
      3. earlySingletonObject是二级缓存,放单例工厂的产品,可称为提前单例对象
  2. 检查父容器,依赖顺序
  3. 按scope来创建bean(五个scope:singleton,prototype,request,session,application)
    1. scope可理解为从xxx范围内寻找这个bean
    2. singleton scope表示从单例池中寻找这个bean,若没有则创建放入单例池
    3. prototype scope表示从不缓存bean,每次都创建新的
    4. request scope表示从request对象范围内获取bean,若无则创建放进request中(session,application同)
  4. 创建bean实例
    1. 创建bean实例
      1. AutowiredAnnotationBeanPostProcessor选择构造        优先选择带@Autowired注解的构造方法,若有唯一的有参构造方法也会入选
      2. 默认的无参构造方法       若上面后处理器没能找到合适的构造方法,就采用默认构造方法,即使是私有的
    2. 依赖注入
      1. 注解匹配  识别@Autowired,@Value,@Resource
      2. byname  set方法中的名字
      3. bytype
      4. 精确指定
    3. 初始化
      1. 处理aware接口
      2. 执行初始化
        1. 识别@Poststruct注解 
        2. 通过InitializingBean接口回调执行初始化 
        3. <bean int-method>或@Bean(initmethod)
      3. 执行aop代理
    4. 注解可销毁接口    判断可销毁bean
  5. 类型转换  如果getbean方法的requestType参数和实际得到的参数不同就会进行类型转换
  6. 销毁bean
    1. 单例bean的销毁在application close时会找到可销毁bean进行销毁
    2. prototypebean要手动销毁
    3. 自定义域bean的销毁在作用域对象生命周期结束时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值