Spring ioc 与aop

122 阅读3分钟

spring高级框架

优点:

   1.轻量级(给jar包,给环境就能够运行)
   2.Spring的ioc与aop两大内核,可以融合各大框架
   3.分层框架mvc(controller service mapper)
   4.提供业务层的事务管理

ioc:Inversion Of Control(ioc控制反转)

   ioc描述的事情:java开发领域对象的创建、管理问题。
   传统的方式:类A依赖于类B,需要在类A中new一个B对象。
   ioc思想:不去new对象,让ioc容器帮我们实例化对象并管理它,需要使用对象的时候去找ioc容器拿。
   ioc与di:两者描述的其实是一件事情在两个角度的叫法,ioc是站在对象的角度,对象实例化及管理权限交给了ioc容器;di是站在ioc容器的角度,容器把对象依赖的其他对象注入到该对象中。

aop:Aspect Oriented Programming(面向切面编程)

aop:在不改变原有业务逻辑的情况下,增强横切逻辑代码,从根本上解耦,避免横切代码重复。
主要应用场景:事务控制、权限校验、日志等。
切:指的是横切逻辑,原有业务逻辑不能动,所以叫面向横切逻辑编程。
面:指的是横切逻辑代码往往要影响的是多个方法,每个方法都如同一个点,多点构成面,有个面的概念在里面。

Spring框架Ioc的实现

ioc实现的三种方式

 1.纯xml方式(bean信息定义全部配置再xml中)
 2.xml+注解(部分bean使用xml定义,部分bean使用注解定义,自己写的类用注解)
 3.纯注解(所有的bean都是用注解定义)
 
 

Spring的ioc实例化bean的三种方式:

  1.使用无参构造器(以及反射技术)  常用
  2.静态方法
  3.实例化对象 

Bean作用范围

 singleton 单例,程序中只有一个对象,创建容器的时候,对象就被创建了;
                 只要容器在对象就一直活着,当容器销毁时,对象才被销毁,单例模式的bean对象生命周期与容器相同。
 prototype 原型,每次请求获取一个新的对象(getBean)当对象被使用时,创建新的对象实例,只要对象在使用中就一直活着,当对象长期不使用的时候,
                 就会被java的GC回收机制回收,多例模式下spring框架只负责创建bean对象不负责销毁。

FactoryBean 与BeanFactory的区别

  spring中bean有两种,一种是普通Bean还有一种是工厂Bean
  FactoryBean 是可以生成某一类型的Bean实例,也就是说我们可以借助于它自定义bean的创建方式
  BeanFactory 是高级接口 

Bean的生命周期

     第一步:实例化Bean
  -->第二步:设置熟悉值
  -->第三步:调用BeanNameAware的setBeanNaem()方法
  -->第四步:调用BeanFactoryAware的setBeanFactory()方法
  -->第五步:调用ApplicationContextAware的setApplicationContext()方法
  -->第六步:调用BeanPostProcessor的预初始化方法
  -->第七步:调用InitializlingBean的afterPropertiesSet()方法
  -->第八步:调用定制的初始化方法init-method()方法
  -->第九步:调用BeanPostProcessor的后初始化方法
  -->第十步:假如是单例模式就放到缓存池中,假如是多例就将Bean交给调用者。

三级缓存用来解决循环依赖问题

image.png