一些研发工程师在Springboot注意点

这篇具有很好参考价值的文章主要介绍了一些研发工程师在Springboot注意点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一些研发工程师在Springboot注意点

一些研发工程师在Springboot注意点

1. 正确设计代码目录结构

虽然您有很大的自由度,但有一些基本规则值得遵循来设计您的源代码结构。

避免使用默认包。确保所有内容(包括入口点)都在命名良好的包中,这样您就可以避免与组装和组件扫描相关的意外情况;

将 Application.java(应用程序的入口类)放在顶级源目录中;

建议将控制器和服务放在面向功能的模块中,但这是可选的。一些非常优秀的开发人员建议将所有控制器放在一起。无论如何,坚持一种风格!

一些研发工程师在Springboot注意点

2. 保持 @Controller 简洁和专注控制器应该非常简单

可以在这里阅读 GRASP 中的控制器模式部分。希望控制器充当协调员和委托者,而不是执行实际的业务逻辑。以下是主要实践:

https://en.wikipedia.org/wiki/GRASP(object-orienteddesign)#Controller

一些研发工程师在Springboot注意点

控制器应该是无状态的!控制器默认是单例的,任何状态都可能引起许多问题;

控制器不应执行业务逻辑,而是依赖于委托;

控制器应处理应用程序的 HTTP 层,这不应该传递给服务;

控制器应围绕用例/业务能力设计。

要深入了解此内容,需要了解更多有关设计 REST API 的最佳实践。无论是想使用 Spring Boot 还是其他,这都值得学习。

3. 围绕业务功能构建 @Service

Service 是 Spring Boot 的另一个核心概念。

最好是围绕业务功能/域/用例(无论您愿意如何称呼)的结构化服务。

在应用程序中设计名称为 AccountService、UserService 等的服务比 DatabaseService、ValidationService、CalculationService 更合适。

可以决定在控制器和服务之间建立一对一的映射,这将是理想的。但这并不意味着服务不能相互调用!

4. 使数据库与核心业务逻辑独立

在之前,我们不确定如何最好地处理 Spring Boot 中的数据库交互。

阅读 Robert C. Martin 的《清晰架构》之后,对此有了更清晰的理解。

一些研发工程师在Springboot注意点

希望您的数据库逻辑与服务分离。理想情况下,您不希望服务知道它正在与哪个数据库交互,这需要一些抽象来封装对象持久化。

Robert C. Martin 强调,您的数据库是一个“细节”,这意味着不将应用程序耦合到特定的数据库。过去很少有人会切换数据库,而我注意到使用 Spring Boot 和现代微服务开发使事情变得更快。

5. 将业务逻辑与 Spring Boot 代码分离

考虑到《清晰架构》的教训,您应该保护您的业务逻辑。

混合各种 Spring Boot 代码是非常诱人的……不要这样做。如果您能抵制诱惑,您将使您的业务逻辑更具可重用性。

服务的一部分通常会成为一个库。删除代码中许多 Spring 注解变得更容易。

6. 推荐使用构造函数注入

这个实践来自 Phil Webb(Spring Boot 项目负责人,@phillip_webb)。

将您的业务逻辑与 Spring Boot 代码分离的一种方法是使用构造函数注入。

构造函数上的 @Autowired 注解不仅是可选的,而且使得在没有 Spring 的情况下实例化 bean 变得更容易。

7. 熟悉并发模型

最受欢迎的文章之一是《Spring Boot 并发简介》

认为之所以受欢迎是因为这个领域经常被误解和忽视。如果使用不当,可能会出现问题。

在 Spring Boot 中,默认情况下,Controller 和 Service 是单例的。如果不小心,这可能引入可能的并发问题。您通常也在处理有限的线程池。请熟悉这些概念。

一些研发工程师在Springboot注意点

一些研发工程师在Springboot注意点

如果正在使用新的 WebFlux 风格的 Spring Boot 应用程序,已经在“Spring 的 WebFlux/Reactor 并行性和压力”中解释了它是如何工作的。

8.加强配置管理的外部化

这超出了 Spring Boot 的范围,尽管这是当人们开始创建多个相似服务时常见的问题……

您可以手动处理 Spring 应用程序的配置。如果您正在处理多个 Spring Boot 应用程序,您需要使配置管理更加强大。

推荐两种主要方法:

1) 使用配置服务器,比如 Spring Cloud Config,国内的Nacos

2) 将所有配置存储在环境变量中(可以基于 git 仓库进行配置)。

一些研发工程师在Springboot注意点

一些研发工程师在Springboot注意点

一些研发工程师在Springboot注意点

这两种选项(第二种选项稍微更多一些)都需要您在 DevOps 上做更少的工作,但在微服务世界中这是相当常见的.

9. 提供全局异常处理

真的需要一种一致的方式来处理异常。Spring Boot 提供了两种主要方法:

您应该使用 HandlerExceptionResolver 来定义全局异常处理策略;

您也可以在控制器中添加 @ExceptionHandler 注解,在某些特定情况下可能有用。

10.使用日志框架

可能已经意识到这一点,但应该使用 Logger 来记录日志,而不是手动使用 System.out.println()。

在 Spring Boot 中,只需在类中获取日志记录器实例即可,几乎不需要配置:

Logger logger = LoggerFactory.getLogger(MyClass.class);

11.测试您的代码

这并不是特定于 Spring Boot,但需要提醒 — 测试您的代码!如果您不编写测试,那么从一开始就编写了遗留代码

一些研发工程师在Springboot注意点

如果其他人使用您的代码库,对其进行任何更改都会变得危险。当您拥有相互依赖的多个服务时,这可能变得更加危险。

由于存在 Spring Boot 最佳实践,您应该考虑使用 Spring Cloud Contract 来进行消费者驱动的.


今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。文章来源地址https://www.toymoban.com/news/detail-711331.html

到了这里,关于一些研发工程师在Springboot注意点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 研发工程师玩转Kubernetes——自动扩缩容

    在《研发工程师玩转Kubernetes——使用Deployment进行多副本维护》一文中,我们通过Deployment实现了多副本维护——即维持在一个确定数量的副本个数。而在现实场景中,我们往往需要根据服务的压力,采用水平(横向)扩容的方式——即增加多个副本,来分担压力。当服务压力

    2024年02月06日
    浏览(43)
  • 技术精英求职必备:大数据研发工程师简历模板

    原则 撰写针对大数据研发工程师职位的简历时,关键在于准确展现您在 大数据处理、分析和应用开发方面的综合技能、项目经验和技术成就 。简历应作为您展示跨多个技术栈的 编程能力、构建完整大数据解决方案和有效解决大数据技术问题 的能力的窗口。确保每一项经历

    2024年02月21日
    浏览(55)
  • 研发工程师玩转Kubernetes——启动、存活和就绪探针

    启动(Startup Probe)、存活(Liveness Probe)和就绪探针(Readiness Probe)有其不同的用途和优先级。 启动探针(Startup Probe)用于Pod内程序告诉kubernetes,其准备工作已经做好。这些准备工作主要是指业务运行前的前置条件,比如资源文件下载完毕,内置数据库文件下载完毕等。这步

    2024年02月13日
    浏览(35)
  • 技术精英求职必备:AIGC(图像生成)研发工程师简历指南

    核心原则 撰写针对AIGC(图像生成)研发工程师职位的简历时,关键在于准确展现您在深度学习、计算机视觉和图像生成算法方面的综合技能、项目经验和技术成就。简历应作为您展示跨多个技术栈的编程能力、构建完整的图像生成解决方案和有效解决AIGC技术问题的能力的窗口

    2024年03月25日
    浏览(73)
  • 《研发效能(DevOps)工程师》课程简介(二)丨IDCF

    为贯彻落实《关于深化人才发展体制机制改革的意见》,推动实施人才强国战略,促进专业技术人员提升职业素养、补充新知识新技能,实现人力资源深度开发,推动经济社会全面发展,根据《中华人民共和国劳动法》有关规定,工业和信息化部教育与考试中心联合有关部门

    2024年02月07日
    浏览(47)
  • 【社招】【中国电信-天翼云】诚聘高级FPGA研发工程师

    基础架构部门介绍: 天翼云是中国电信旗下云计算品牌,致力于成为领先的云计算服务提供商。 基础架构部作为天翼云的核心部门,负责构建天翼云的整个物理基础设施。打造了包括紫金DPU、物理服务器、物理网络、RDMA网络、操作系统、虚拟化、IDC在内的核心底座产品。基

    2024年02月03日
    浏览(47)
  • 博冠光电8K事业部招聘研发工程师及产品经理

    一、高级结构工程师 工作职责:1、负责公司产品的机械结构设计、模具开发和量产导入;2、负责机械结构方向的技术预研,包括技术专题研究,技术难题攻关; 3、负责结构组的技术管理工作,包括带新人,材料选型,设计审核;4、领导安排的其他工作。任职要求:1.、本

    2024年02月12日
    浏览(38)
  • 阿里云研发工程师刘睿:阿里云消息生态及最佳实践

    2022 年 9 月 24 日,阿里云用户组(AUG)第 12 期活动在厦门举办。活动现场,阿里云消息中间件研发工程师刘睿,向参会企业代表分享了阿里云消息生态及最佳实践。本文根据演讲内容整理而成。 众所周知,消息中间件作为现代软件体系中的底层基础软件,和数据库一样广泛

    2023年04月09日
    浏览(41)
  • 研发工程师玩转Kubernetes——使用Node特性定向调度Pod

    在《研发工程师玩转Kubernetes——使用污点(taint)驱逐Pod》中我们提到亲和性(affinity)中的requiredDuringSchedulingIgnoredDuringExecution,它可以定向调度Pod。本节我们将使用相关特性完成定向调度的介绍。 我们先模拟Pod被部署在Master Node上的场景。这个时候我们可以使用nodeSelector对

    2024年02月08日
    浏览(46)
  • 突破职场竞争,引领未来发展:考取《研发效能(DevOps)工程师职业技术认证》

    就业形势堪忧,什么最有保障?考个“国家级”证书傍身吧! 工信部教考中心作为中国领先的行业技能认证机构,其颁发的认证证书不仅代表了个人在信息技术领域的专业能力,更可以录入工业和信息化技术技能人才数据库,这是一个重要的信息资源平台,它可以帮助企业和

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包