分层解耦的三层架构
如下图所示是手术训练系统中的实现:
如果你需要从new EmpServiceA()变为new EmpServiceB(),那么必然需要修改Service和Controller层的代码,那么如果我们不new 这个对象呢?是不是就不需要依赖Controller层。
思路:提供一个容器存入一些对象,将EmpServiceA在容器种存入一个a对象,Controller程序运行的时候需要依赖empService这个类型的对象
如果这个时候需要B这个对象
即使service层代码变了,我们也不需要修改Controller层的代码。这里就引出了Spring的第一大核心IOC,将所有的对象都交给了容器管理。
如下图所示是手术训练系统中的实现:
IOC与DI
如何切换呢?如下图所示,只需要将EmpServiceB的@Component注解注释掉(不加入容器),将EmpServiceB的@Component注解加入容器
MySQL简单查询
一对多数据库的设计
多的一方建立一列少的一方的主键
如下图所示是手术训练系统中的实现:
手术训练系统的一个任务对应多条成绩
一对一数据库的设计
如下图所示是手术训练系统中的实现:
手术训练系统中的任务表与任务配置表