spring的IOC和AOP图解

spring的三大核心

IOC

描述:

  • IOC(是种思想),控制反转,将对象和对象之间的调用过程,交给spring来处理。简单来说,就是将对象的创建-初始化-销毁等交给spring。而不是开发者自动管理。

对比:

  • 原来:

    • 在获取对象时,需要new对象,是主动的
    • spring的IOC和AOP图解
  • 使用IOC(IOC容器底层就是对象工厂):

    • 获取对象时,直接跟工厂要。工厂为之创建对象,是被动的
    • xml配置文件,配置创建的对象,只需要修改xml的bean路径
    • 工厂里的方法不需要修改
    • xml文件对路径进行解析,
    • 通过反射得到类的.class文件,从而得到类的内容
    • spring的IOC和AOP图解

ioc实现两个接口

  • beanfactory(底层接口)
    • 将注入的xml等进行实例化
    • 什么时候使用,什么时候创建对象
  • ApplicationContext(此接口由开发人员使用)
    • beanfactory的子接口
    • 一读取配置文件,默认就会创建对象
    • 实现类
      • 从类的根路径加载配置文件ClasspathXmlApplicationContext
      • 从磁盘路径加载配置文件FileSystemXmlApplicationContext
  • factorybean
    • 是bean的生成工具,对beanfactory进行实例化

DI(依赖注入)

  • 控制的什么被反转了?就是:获得依赖对象的方式反转了。

实现方式

  • 接口注入
  • 构造器注入
  • setter注入

AOP

描述:

  • 面向切面,将功能独立提取出来实现。避免在业务逻辑的代码冗余。
  • 比如权限,将判断抽离出来

底层: 它的底层是使用的动态代理,有两种情况

  • 有接口

    • 使用JDK动态代理,
    • 创建接口实现类的代理对象
    • spring的IOC和AOP图解
  • 无接口

    • 使用CGLB动态代理
    • 创建子类的代理对象
    • spring的IOC和AOP图解

常用注解:

  • @Component主要用于将一个Java类注入到Spring框架中,它相当于XML配置文件中的
  • @Autowired注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作(DI依赖注入工作)
  • Spring通过@Autowired注解实现Bean之间的依赖关系
  • @Repository:用于对Dao实现类注解
  • @Service:用于对Service实现类注解
  • @Controller:用于对Controller实现类注解

bean的生命周期:

  • 实例化
  • 属性配置
  • 初始化
  • 销毁

配置方式:

  • xml
  • 注解
  • 基于java配置