首页
学习
活动
专区
工具
TVP
发布

物流IT圈

专栏作者
280
文章
502981
阅读量
97
订阅数
SAAS微服务脚手架推荐
基于SpringCloud(Hoxton.SR3) + SpringBoot(2.2.6.RELEASE) 的SaaS 微服务脚手架,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API、分布式事务、大文件断点分片续传等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Redis、RibbitMQ等主要框架和中间件。
物流IT圈
2020-05-25
1.7K0
Spring Web 应用的最大败笔
开发人员在使用Spring应用是非常擅长谈论依赖注入的好处。不幸的是,他们不是那么真的利用它的好处,如单一职责原则,分离关注原则。如果我们一起来看看大部分Spring的Web应用程序,常见的错误的设计如下: 1.领域模型对象用来存储应用的数据(当作DTO使用),领域模型是贫血模型这样的反模式。 2.服务层每个实体有一个服务。 问题是这样很普遍,错误在哪里呢? Spring的web应用程序之所以这样是因为他们做事物的方式一直都是这样做的,老习惯难改,特别是如果他们是高级开发人员或软件架构师,这些人捍卫这样做的论据之一是:我们的应用程序遵循关注分离的原则,因为它已经被分为若干层,每个层有自己的特定职责。 1. Web层负责处理用户输入,并返回正确的响应返回给用户。 web层与服务层通信。 2.服务层作为一个事务边界。它也负责授权和包含我们的应用程序的业务逻辑。服务层管理的域模型对象,并与其他服务和存储库层进行通信。 3.存储库/数据访问层负责与所使用的数据的存储进行通信。 分离关注(Soc)是分离计算机程序为不同的部分,每个部分有一个关注聚焦,一个典型的Spring Web应用在一定程度上遵循这一原则,但现实是,该应用程序有一个整体的服务层,它有太多的责任。更具体地,服务层有两个主要问题: 1.在服务层发现业务逻辑 业务逻辑被分散在各个服务层。如果我们需要检查一个业务规则是如何实现的,我们必须先找到它。这可能并不容易。此外,如果相同的业务规则需要在多个服务类,问题是,规则需要从一个服务到另一个简单地复制。这将导致维护的噩梦。 2.每个领域模型一个服务 这完全违反了单一职责原则,它被定义为如下:单一职责原则指出,每一个类都应该有一个责任,责任应该由类完全封装。其所有的服务应该狭义与责任相一致。(不应将原属于领域模型的行为方法等划放在服务中实现,对象不但有属性还有行为) 服务类有很多依赖,以及大量的循环依赖。更像网络紧密耦合和单片服务。这使得很难理解,维护和重用。这听起来有点苛刻,但一个Spring的web应用的服务层往往是最容易出问题的部分。幸运的是,所有的希望都不会丢失。 1. 我们必须将我们的应用程序的业务逻辑从服务层迁移到领域模型类中。 举个例子:假设我是一个服务类,你是一个域模型对象。如果我让你从屋顶上跳下来,你会喜欢我这样的决定吗?(跳下来会摔伤,自己没有脑子或被洗脑,变成僵尸,只听从执行,不思考自己的安全,这就是贫血模型的问题) 将业务逻辑从服务层迁移到域模型类有下面三个优势: (1)我们的代码将以逻辑方式切割,服务层只要关注应用逻辑,而我们的领域模型关注业务逻辑。 (2)业务逻辑只存在一个地方,容易发现修改。 (3)服务层的源代码是清洁的,不包含任何复制粘贴代码 2. 将每个实体服务切割为单一目标的更小的服务。 比如,有一个单一服务类,提供对人员和用户账户的CRUD操作,我们应该将它分为两个独立的服务类: 第一个是对人员的提供CRUD操作 第二个是提供与用户账户相关的操作。 好处:每个服务类中有一个逻辑组职责。每个服务类的依赖较少,这意味着他们不再是紧耦合的源头。他们是较小的和松耦合的组件。服务类更容易理解,维护和重用。 这两个简单的步骤将帮助我们使得我们的应用程序架构更干净,有助于同行开发商提高生产力和幸福。
物流IT圈
2019-12-11
3430
Java中创建对象的5种方式
作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象。然而这里有很多创建对象的方法,我们会在这篇文章中学到。
物流IT圈
2019-07-16
9890
一份架构师知识清单
IT行业的人经常觉得压力很大,必须不断学习才能够赶上时代的节奏。但是“学习”这个概念太空泛了,即便真的花时间学习,要学什么,怎么学,许多人也是一头雾水,只能干着急。
物流IT圈
2019-07-16
6630
传统SpringMVC到Springboot迁移之路
最近在把公司的老项目迁移到springboot,遇到了很多坑,包括jar包的升级,代码重构,以及全方位的测试。具体过程参照了简书上的一篇文章。
物流IT圈
2019-07-16
4.1K0
spring-session用redis实现session共享实践
通常情况下,Tomcat、Jetty等Servlet容器,会默认将Session保存在内存中。如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案。但是这种方案有一个缺点,就是不利于扩展。
物流IT圈
2019-07-16
1.2K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档