系统架构上层依赖于下层
aop面向切面编程,要依赖核心容器的执行。
aspects是对aop思想进行了实现。
二、IOC控制反转
1.IOC控制反转:对象的创建控制权由程序转移到外部,这种思想称为控制反转。
IOC 控制反转:使用对象时, 由主动new产生对象转换为由IOC容器提供对象,此过程中对象创建控制权由程序转移到IOC容器,此思想称为控制反转。
简单来说IOC就是用对象时不用自己new,由外部提供(由ioc容器提供),ioc管的bean之间有关系,ioc容器还能把关系绑好,这就是DI,就能真正运行。这里IOC容器管理的对象叫bean。
2.Spring技术对IOC思想进行了实现。
①Spring提供了一个容器,称为IOC 容器,
②IOC 容器负责对象的创建初始化等一系列工作, 被创建或被管理的对象在IoC容器中统称为Bean
bean:比如service和dao层就属于bean,service要依赖dao运行,他俩有依赖关系,所以IOC把他依赖关系绑定,这个过程叫依赖注入
3.DI 依赖注入:
在容器中建立bean与bean之间的依赖关系的整个过程, 称为依赖注入
4.目标:充分解耦
①使用IoC容器管理bean (IoC)
②在IoC容器内将有依赖关系的bean进行关系绑定(DI)
5.最终效果:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系
IOC案例
1.在maven项目的pom.xml中先导入坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
用5.2.10.RELEASE版本的也行
2.定义Spring管理的类
3.再在resources目录下创建applicationContext配置文件,在里面配置对应的bean
4.初始化IOC容器,通过容器获取bean
因为上述这种方法仍然会使用new bookDao,所以改进为下面的方法
1.删除使用new方法创建对象的代码,再加上set方法,这个set方法是容器在执行的
2.在applicationContext配置中 绑定service和dao的关系
ref关联的dao是当前的容器中对应的bean名称bookDao,而前面的bookDao是当前的属性名称