说明:本节利用一个案例来说明如何通过ioc帮助我们将软件过程中的对象进行解耦,进而让我们软件成员协作之间也出现解耦
创建全新工程
完成底层配置
创建两个不同的spring配置文件
保存服务类
保存数据访问类,用于数据库的增删改查
为什么要写两个,这是出于项目管理的考量,因为一个项目中有技术好和技术差的人dao实现数据库的增删改查,没有什么技术含量,这种工作交给初级程序员。但是对于service这是系统中最核心的实现代码肯定要找一个编码快能力强的人来进行开发,试想一下两个人分别开发属于自己的类在对spring进行配置的时候是想同一个文件写好呢?还是分开各维护自己的文件好呢?显然后者。
创建包
创建接口
代表向book表中插入数据
有接口就要有实现类
下面创建service,采购新的图书,当一本图书被采购相当于往book表中新增一条数据,当然需要dao来进行数据插入
此时作为ioc容器可以通过set方法为其进行动态注入
service和dao写好如何让ioc对她进行管理呢?分别需要在两个xml文件中进行配置
写好启动的过程中就会调用bookDao这个bean
service和dao是两个人在维护各自的文件,但是作为bookService在运行时是需要bookDao的这个时候怎么办呢?
只需要获取id=bookDao的对象就可以了,各司其职互不影响
下面增加应用程序的入口
因为都是以applicationContext开头所以-*就可以通过这一个表达式spring在启动时就会扫描这两个文件,并按照先后顺序去实例化
通过getBean来获取到bookService对象来实现对应业务逻辑
通过我们配置的方式实现了由service调用dao的过程,service和dao是不同人来进行完成的,她们都拥有属于自己的开发文件,两个人在约定好bean以后就各做各的,互不干扰。好处太明显了假如现在要把数据库替换成Oracle,在创建好接口后只需要额外创建一个Oracle对应的数据库实现就可以了
把mysql替换成oracle就可以了,其他不用做任何变化
不需要更改