分层解耦-

三层架构

controller:

        叫做控制层,主要的功能是处理用户发送的请求。主要处理外部请求。调用service层,将service层返回的BO/DO转化为DTO/VO并封装成统一返回对象返回给调用方。如果返回数据用于前端模版渲染则返回VO,否则一般返回DTO。不论是DTO还是VO,一般都会对BO/DO中的数据进行一些转化和整合,比如将gender属性中的0转化“男”,1转化为“女”等。controller的功能主要有5点:参数校验、调用service层接口实现业务逻辑、转换业务/数据对象、组装返回对象、异常处理。

service:

        业务层,用来实现业务逻辑。能调用dao层或者service层,返回数据对象DO或者业务对象BO,BO通常由DO转化、整合而来,可以包含多个DO的属性,也可以是只包含一个DO的部分属性。通常为了简便,如果无需转化,service也可以直接返回DO。外部调用(HTTP、RPC)方法也在这一层,对于外部调用来说,service一般会将外部调用返回的DTO转化为BO。是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。主要去负责一些业务处理,比如取得连接、关闭数据库连接、事务回滚,一些复杂的逻辑业务处理就放到service层。

dao:

        负责访问数据库进行数据的操作,取得结果集,之后将结果集中的数据取出封装到VO类对象之后返回给service层。数据层,直接进行数据库的读写操作,返回数据对象DO,DO与数据库表一一对应。Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。

流程

        Controller层接收到浏览器发送的请求,调用Service进行处理逻辑业务,再由Service层调用dao层访问数据库对数据进行增删改查操作。数据库再返回更新后的数据到dao层和Service,再返回Controller层,Controller层返回网页,将更新后的数据渲染到页面。

分层解耦

软件设计原则:高内聚低耦合。

内聚:软件中各个功能模块内部的功能联系。

耦合:衡量软件中各个层/模块之间的依赖、关联程度。

IOC&DI(实现高内聚低耦合)

IOC:控制反转,对象的创建控制权由程序自身转移到外部(容器),这种思想成为控制反转

DI:依赖注入,容器为i用用程序提供运行时,所依赖的资源,称之为依赖注入

Bean对象:IOC容器中创建、管理的对象,称之为bean

使用:Service层及Dao层的实现类交给IOC容器管理,为Controller及Service注入运行时,依赖的对象

常用注解
 

注解说明位置
@Component声明bean的基础注解不属于以下三类时,用此注解
@Controller        @Component的衍生注解标注在控制器上
@Service        @Component的衍生注解标注在业务类上

@Repository

@Component的衍生注解标注在数据访问类上(mybatis整合)
注解位置说明
@RestControllerController层类上方将该类下的所有方法的返回值都默认为JSON格式的数据
@RequestMappingController层处理方法上方将HTTP请求映射到处理方法上,可以指定HTTP请求的方法类型
@Repository        Dao层类上方将数据访问代码与业务逻辑代码分开,使得更改数据访问层不会影响业务逻辑层(对数据增删改查)
@ServiceService层类上方将一个类声明为业务逻辑组件,并将其对象存入 Spring 容器中
@RequestParamController层方法传参,参数前传递参数,用于将请求参数区数据映射到功能处理方法的参数上,如果前后端传输参数名字不一样可以用@RequestParam
@DateTimeFormat接收的类中对应的时间类型属性,并在注解中加上pattern属性定义日期格式

Bean注入

@Autowired注解,默认是按照类型进行,如果存在多个相同类型的bean,将会报出如下错误:

 解决方案:

@Primary

@Qualifier

@Resource

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值