spring的IOC和AOP图解
spring的三大核心
IOC
描述:
- IOC(是种思想),控制反转,将对象和对象之间的调用过程,交给spring来处理。简单来说,就是将对象的创建-初始化-销毁等交给spring。而不是开发者自动管理。
对比:
-
原来:
- 在获取对象时,需要new对象,是主动的
-
使用IOC(IOC容器底层就是对象工厂):
- 获取对象时,直接跟工厂要。工厂为之创建对象,是被动的
- xml配置文件,配置创建的对象,只需要修改xml的bean路径
- 工厂里的方法不需要修改
- xml文件对路径进行解析,
- 通过反射得到类的.class文件,从而得到类的内容
ioc实现两个接口
-
beanfactory(底层接口)
- 将注入的xml等进行实例化
- 什么时候使用,什么时候创建对象
-
ApplicationContext(此接口由开发人员使用)
- 是beanfactory的子接口
- 一读取配置文件,默认就会创建对象
- 实现类
- 从类的根路径加载配置文件ClasspathXmlApplicationContext
- 从磁盘路径加载配置文件FileSystemXmlApplicationContext
- factorybean
- 是bean的生成工具,对beanfactory进行实例化
DI(依赖注入)
- 控制的什么被反转了?就是:获得依赖对象的方式反转了。
实现方式
- 接口注入
- 构造器注入
- setter注入
AOP
描述:
- 面向切面,将功能独立提取出来实现。避免在业务逻辑的代码冗余。
- 比如权限,将判断抽离出来
底层: 它的底层是使用的动态代理,有两种情况
-
有接口
- 使用JDK动态代理,
- 创建接口实现类的代理对象
-
无接口
- 使用CGLB动态代理
- 创建子类的代理对象
常用注解:
- @Component主要用于将一个Java类注入到Spring框架中,它相当于XML配置文件中的
- @Autowired注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作(DI依赖注入工作)
- Spring通过@Autowired注解实现Bean之间的依赖关系
- @Repository:用于对Dao实现类注解
- @Service:用于对Service实现类注解
- @Controller:用于对Controller实现类注解
bean的生命周期:
- 实例化
- 属性配置
- 初始化
- 销毁
配置方式:
- xml
- 注解
- 基于java配置