Java项目技术

SpringBoot 三层架构 Controller、Service、Dao作用和关系

springboot是web开发的一个主流框架。springboot就是实现了前后端分离,从而工作人员分配任务的时候更加具有条理性。而三层的架构可以让程序员很快地知道bug出现在哪里,哪一层,哪一文件,很快的修改bug。

Controller:
业务控制,它的作用主要是架起了外界与业务层沟通的桥梁,移动端,前端在调用接口访问相关业务时,都会通过Controller,由Controller去调相关的业务层代码并把数据返回给移动端和前端;Controller只是一个中间者或者转发者,不应该在Controller里暴露Service的业务逻辑,而应该直接转发Service的业务处理结果!

Service:
业务层,所有的内部的业务逻辑都会放在这里处理,比如用户的增删改查,或者发送个验证码或邮件都会在Service中进行,当然,业务离肯定是离不开数据的支持,因此Dao层是必不可少的;

dao层
数据持久化层,就是和数据库打交道的,而实现持久化层的框架又有很多,而常用的有两种:JPA和MyBatis,JPA是SpringBoot官方的,好处是不用手写SQL(当然它也支持手写,如果必要的话),国外用的比较多,而MyBatis则在国内比较流行,原因是它的灵活性非常高,但是需要手写SQL语句!

项目复杂程度一般,追求稳定,迭代速率低的可以用JPA;
项目较复杂,需求变更频繁,迭代速度快的可以用MyBatis;

一般的,一个Controller对应一个Service,一个Service对应一个Dao,一个Dao对应一个数据库表,当然根据项目或业务复杂程度,一个Controller可以调用多个Service,而一个Service也可以调用多个Dao,但是Controller层不允许互调,Service层也不允许互调,意思就是AController不能直接调用BController,AService也不能直接去调用BService,遵循高内聚低耦合原则!

Spring 和 Spring Boot

spring是一个框架,同时是一个容器,还是一个生态。为Java程序提供了全面的基础架构支持,包含非常多的使用功能,比如spring JDBC、spring AOP等。这些模块的出现缩短了应用程序的开发时间,同时提高了应用开发的效率。

spring boot是spring框架的延伸和扩展,简化了spring框架初始搭建以及开发的过程,使用它可以不再使用spring应用程序中的XML配置,可以更快、更高效开发spring。

添加starter模块支持后,项目搭建期会把所有其他依赖项自动添加到项目中,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 spring

 

 

 

spring两大特性:ioc、aop。控制反转,面向切面编程。

控制反转,就是创建对象的控制权,被反转到了Spring框架上。

 通常,我们实例化一个对象时,都是使用类的构造方法来new一个对象,这个过程是由我们自己来控制的,而控制反转就把new对象的工交给了Spring容器

 

IoC的主要实现方式有两种:依赖查找、依赖注入。

IoC容器:具有依赖注入功能的容器,可以创建对象的容器。IoC容器负责实例化、定位、配置应用程序中的对象并建立这些对象之间的依赖。

依赖注入:由IoC容器动态地将某个对象所需要的外部资源(包括对象、资源、常量数据)注入到组件(Controller, Service等)之中。简单点说,就是IoC容器会把当前对象所需要的外部资源动态的注入给我们。

Spring依赖注入的方式主要有四个,基于注解注入方式、set注入方式、构造器注入方式、静态工厂注入方式。推荐使用基于注解注入方式,配置较少,比较方便。

 

面向切面编程(AOP)就是纵向的编程。

在实际开发中,比如商品查询、促销查询等业务,都需要记录日志、异常处理等操作,AOP把所有共用代码都剥离出来,单独放置到某个类中进行集中管理,在具体运行时,由容器进行动态织入这些公共代码,是的程序员更加专注于开发工作。

AOP主要一般应用于签名验签、参数校验、日志记录、事务控制、权限控制、性能统计、异常处理等。

 

Spring核心容器的主要组件是Bean工厂(BeanFactory),Bean工厂使用控制反转(IoC)模式来降低程序代码之间的耦合度,并提供了面向切面编程(AOP)的实现。

Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架。

 

能够明确该类是一个控制器类组件的,就用@Controller;能够明确是一个服务类组件的,就用@Service;能够明确该类是一个数据访问组件的,就用@Repository;不知道他是啥或者不好区分他是啥,但是就是想让他动态装配的就用@Component。@Controller、@Service、@Component、@Repository都是类级别的注解。

 

 

 

 

posted @ 2022-11-05 20:54  sodium酱  阅读(173)  评论(0编辑  收藏  举报