springboot分层解耦

三层架构

1. Controller

控制层,接收前端传来的数据,对该数据做出响应

2. Service

业务逻辑层,处理具体的事务逻辑

3.Dao

数据访问层,负责数据的访问操作,包括数据的增删改查。

前端向后端请求的业务流程
web->Controller->Service->Dao
对于前端网页的请求,就是controller调用service,service调用dao,dao层的mapper文件就负责数据的增删改查

分层解耦

1.

内聚:软件中各个功能模块内部的功能关系
耦合:衡量软件中各个层/模块之间的依赖、关联的程度
==高内聚低耦合 ==
springboot分层解耦_第1张图片
在一个类里,又new了另一个类的新对象,即耦合

2.IOC

控制反转:简称IOC,对象的创建控制权由程序转移到外部容器,这种思想为控制反转
要放进容器的类,只需在类的上面添加上@Component,放入后,该类就是容器中的bean
依赖注入:简称DI,容器为应用程序提供运行时,所依赖的资源,简称依赖注入
在容器中取值,使用@Autowired,该注解定义在注入的类上方
bean对象:ioc容器中创建、管理的对象,称之为bean
springboot分层解耦_第2张图片
实现解耦合,首先,@Component将其放入容器中,不用new对象,用@Autowired就可以取值

Bean的申明,即容器注解的衍生
1.@Component:不属于dao/service/controller层的bean对象使用
在使用springboot开发web项目时,控制层的bean只能用controller注解
2.@Controller:用于控制层
3.@Service:用于业务层
4.@Repository:用于dao层

容器对象的扫描
1.在启动类中添加@ComponentScan(“包名”),就能扫描到容器中的对象
1.在启动类中,@SpringBootApplication,默认包含了@ComponentScan,但是它只能扫描到当前类的包,以及当前类的子包中的容器对象

3.DI

在这里插入图片描述
Service层中,一个接口有两个实现类时,且两个都添加了@Service注解,容器中对应的Empservice对象就有两个,会报错
解决办法:
1.在需要放进容器的实现类上添加@Primary
springboot分层解耦_第3张图片

2.配合@Autowired使用
springboot分层解耦_第4张图片
3.@Resource,该依赖是由jdk提供
springboot分层解耦_第5张图片

你可能感兴趣的:(spring,boot,java,前端)