springboot分层解耦

文章介绍了JavaWeb开发中的三层架构,包括Controller控制层、Service业务逻辑层和Dao数据访问层。同时,讨论了内聚和耦合的概念,以及如何通过IOC(控制反转)和DI(依赖注入)来实现解耦合。在Spring框架中,@Component、@Controller、@Service和@Repository注解用于标记不同层的bean对象,而@Primary和@Resource则在处理多个实现类时发挥作用。@SpringBootApplication和@ComponentScan用于扫描和管理容器中的对象。

三层架构

1. Controller

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

2. Service

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

3.Dao

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

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

分层解耦

1.

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

2.IOC

控制反转:简称IOC,对象的创建控制权由程序转移到外部容器,这种思想为控制反转
要放进容器的类,只需在类的上面添加上@Component,放入后,该类就是容器中的bean
依赖注入:简称DI,容器为应用程序提供运行时,所依赖的资源,简称依赖注入
在容器中取值,使用@Autowired,该注解定义在注入的类上方
bean对象:ioc容器中创建、管理的对象,称之为bean
在这里插入图片描述
实现解耦合,首先,@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
在这里插入图片描述

2.配合@Autowired使用
在这里插入图片描述
3.@Resource,该依赖是由jdk提供
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值