spring---web项目结构分层

本文探讨了前后端分离架构下WEB API与JSON交互的工作原理,介绍了常见的领域模型及其应用场景,包括DO、DTO、BO、AO及VO等,并讨论了filter在Spring框架中的集成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 一般的web结构

  在前后台分离的情况下,我们对前端一般会以WEB API的形式同过JSON交互来与前端进行交互。一般来讲,我们的数据模型会在controller层进行交互,进行数据的校验与处理,然后交给service层进行相应的逻辑处理。如果service需要与数据库的支持,则调用dao层来获取与存储数据。这样分层的好处是当我们的数据存储方式发生了变化,如我们的数据库从oracle变成了mysql,我们只要改一下dao层的配置,不会影响我们的业务代码,特别注意的是,如果service层在调用不同的表时,我们最好调用对应表的service层的方法,不应该出现一个service调用多个dao的情况。

   2.分层领域模型

 

在阿里巴巴编码规约中列举了下面几个领域模型规约: 

 

  • DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。 

  • DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。 

  • BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。 

  • AO(Application Object):应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。 

  • VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。 

  • Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。

 

而对于数据模型也就是我们所谓的bean来讲,我们最好在不同的层里面使用不同的对象。因为这样可以更灵活的操控不同层的数据

但每一个层基本都自己对应的领域模型,这样就导致了有些人过于追求每一层都是用自己的领域模型,这样就导致了一个对象可能会出现3次甚至4次转换在一次请求中,当返回的时候同样也会出现3-4次转换,这样有可能一次完整的请求-返回会出现很多次对象转换。如果在开发中真的按照这么来,恐怕就别写其他的了,一天就光写这个重复无用的逻辑算了吧。

 

 

    3.filter与spring

 

  filter是javax.servlet 包中的过滤器,它的加载与控制不受Spring容器的影响,一般由web容器如tomcat通过web.xml来进行加载,所以在使用filter时,我们无法通过spring注解的方式来获取spring创建的对象。

  

 

  但如果碰到如filter来判断用户是否登陆,我们必须使用spring所创建的缓存对象,怎么办。这是我们只需要spring中的DelegatingFilterProxy类来对你的filter进行代理,而

DelegatingFilterProxy可以在spring中进行注册,然后DelegatingFilterProxy再将你的filter注册进入spring中,这是你就可以使用@Resource,或者@Autowire来获取你想要的对象了。

转载于:https://www.cnblogs.com/sospopo/p/9373705.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值