10个最佳实践,让您像专业人士一样编写SpringBootAPI,并结合编码示例和解释: 1.RESTfulAPI设计原则: 清晰一致的资源命名:使用准确反映API管理的资源的名词(例如,/products、/users)。 @GetMapping("/products/{id}") publicResponseEntity<Product>getProductById(@PathVariableLongid){ //... } 标准化HTTP方法:遵循CRUD操作的RESTful约定(CREATE:POST、READ:GET、UPDATE:PUT、DELETE:DELET...

  lnZqfDbuKjjk   11天前   17   0   0 Java

发现SpringOne的官网上有个好玩的彩蛋,分享给大家! 进到SpringOne的官网,可以看到右下角有个类似马里奥游戏中的金币图标。 点击该金币之后,会打开一个新的页面,进入下面这样一个名为:TheHistoryOfSpring的在线小游戏 你可以使用上下左右的方向键来控制Spring的Logo一步步经历Spring的发展历程。 比如:最开始的第一个金币,就是RodJohnson发布《ExpertOne-on-OneJ2EEDesignandDevelopment》 然后SpringFramwork开源项目的诞生 SpringFramwork1.0的发布 SpringSecuri...

  lnZqfDbuKjjk   12天前   19   0   0 Java

在SpringDataJPA应用程序中管理跨多个存储库接口的数据库访问逻辑可能会变得乏味且容易出错。开发人员经常发现自己为常见查询和方法重复代码,从而导致维护挑战和代码冗余。幸运的是,SpringDataJPA为这个问题提供了一个强大的解决方案:@NoRepositoryBean 注解。在本文中,我们将探讨 @NoRepositoryBean 如何允许我们在超级接口中定义通用查询和方法,然后可以由所有基本类型存储库继承,从而简化我们的代码库并促进代码重用。 问题场景 在SpringDataJPA应用程序中管理跨多个存储库接口的数据库访问逻辑通常会导致冗余代码和维护...

  lnZqfDbuKjjk   12天前   20   0   0 Java

当在SpringBoot应用程序中使用SpringDataJPA进行数据库操作时,配置Schema名称是一种常见的做法。然而,在某些情况下,模式名称需要是动态的,可能会在应用程序运行时发生变化。比如:需要做数据隔离的SaaS应用。 所以,这篇博文将帮助您解决了在SpringBoot应用程序中如何设置动态Schema。 问题场景 假设,您的应用程序是一个SaaS软件,需要为多个租户提供服务,每个租户都需要一个单独的数据库架构。 在这种情况下,在应用程序属性中对Shema名称进行硬编码是不太可能的,这样有一个用户新增,就要去写代码更新。 所以,为了应对这一挑战,我们将探索一种允许在运行时动态配置模...

  lnZqfDbuKjjk   13天前   23   0   0 Java

读取文件内容,然后进行处理,在Java中我们通常利用Files类中的方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理的文件可能比我们机器所拥有的内存要大。此时,我们则需要采用另一种策略:部分读取它,并具有其他结构来仅编译所需的数据。 接下来,我们就来说说这一场景:当遇到大文件,无法一次载入内存时候要如何处理。 模拟场景 假设,当前我们需要开发一个程序来分析来自服务器的日志文件,并生成一份报告,列出前10个最常用的应用程序。 每天,都会生成一个新的日志文件,其中包含时间戳、主机信息、持续时间、服务调用等信息,以及可能与我们的特定方案无关的其他数据。 2024-...

  lnZqfDbuKjjk   2024年03月29日   59   0   0 Java

就在昨晚,Java22正式发布!该版本提供了12项功能增强,其中包括7项预览功能和1项孵化器功能。它们涵盖了对Java语言、API、性能以及JDK中包含的工具的改进。 下面就来一起学习一下该版本都更新了哪些新特性! UnnamedVariables&PatternsJEP456 JEP456未命名变量和模式:当需要但未使用变量声明或嵌套模式时,提高了可读性。两者都由下划线字符表示。 价值 捕获开发人员的意图,即未使用给定的绑定或lambda参数,并强制执行该属性以澄清程序并减少出错的机会。 通过识别必须声明(例如,在catch子句中)但未使用的变量,提高所有代码的可维护性。 允许多个...

  lnZqfDbuKjjk   2024年03月20日   14   0   0 Java

如果最近您收到了MacOS14.4的升级提醒,那么建议你暂时先不要升级! 在x上,Java开发领域的一些大v们,也发现了这个问题,并提醒大家不要升级。 根据Java官方发布的文章了解到,该问题主要是由于macOS上运行的进程可能会访问受保护内存区域中的内存。在macOS14.4更新之前,在某些情况下,macOS内核会通过向进程发送信号SIGBUS或SIGSEGV来响应这些受保护的内存访问。然后该进程可以选择处理该信号并继续执行。而在最新macOS14.4中,当线程在写入模式下运行时,如果尝试对受保护的内存区域进行内存访问,macOS将发送信号SIGKILL。该进程无法处理该信号,并且该进...

  lnZqfDbuKjjk   2024年03月18日   36   0   0 Java

关于阿里的通义灵码,之前DD就给大家推荐过,虽然比起GitHubCopilot还有一些差距。但日常使用,大部分场景还是游刃有余的。另外,它还是免费使用的,还要什么自行车?最近正好看到它们在搞活动,不管你之前是否已经使用,还是没有体验过,这次都推荐来尝试一下!因为不管你觉得好不好,都有🎁拿啊🤤! 下面是领取步骤,只要动动手指跟着步骤做就可以了: 进入活动页,点击这里 登录您的阿里云账号之后,根据下图分两步点击 点击“领取盲盒”之后,领取成功如下图: 然后去IDEA或者VSCode等开发工具的插件市场里搜索:lingma,完成插件的安装,比如下面是IDEA的插件安装: 安装...

  lnZqfDbuKjjk   2024年03月14日   62   0   0 Java

当我们想要封装一些自定义功能给别人使用的时候,创建SpringBootStarter的形式是最好的实现方式。如果您还不会构建自己的SpringBootStarter的话,本文将带你一起创建一个自己的SpringBootStarter。 快速入门 创建一个新的Maven项目。第三方封装的命名格式是xxx-spring-boot-starter,例如:didispace-spring-boot-starter。 编辑pom.xml,添加spring-boot-autoconfigure和spring-boot-starter依赖 <dependencies> <depende...

  lnZqfDbuKjjk   2024年02月27日   58   0   0 Java

之前给大家推荐过一些油管上的免费学习资源,如果您还没有看过的话可以点击这里前往。 今天再给大家推荐一批Udemy上超高质量并且免费的编程课程,有需要的小伙伴可以学起来了。 1.JavaScriptEssentials 第一门免费课程是:JavaScriptEssentials。顾名思义,本课程旨在帮助您掌握JavaScript的基础知识。该课程涵盖基本的API并以一个迷你项目结束。这是一个相当小的课程,您仅需要花费6小时30分钟就可以学习完成。 通过这个教程您将学习的内容包括:编程基础知识、语言基础知识及其关键概念,以及JavaScript核心功能。当然,该课程也有一些进阶内容。所以,如果您...

  lnZqfDbuKjjk   2024年02月21日   57   0   0 Java

虚拟线程(VirtualThreads)是Java21所有新特性中最为吸引人的内容,它可以大大来简化和增强Java应用的并发性。但是,随着这些变化而来的是如何最好地管理此吞吐量的问题。本文,就让我们看一下开发人员在使用虚拟线程时,应该如何管理吞吐量。 在大多数情况下,开发人员不需要自己创建虚拟线程。例如,对于Web应用程序,Tomcat或Jetty等底层框架将为每个传入请求自动生成一个虚拟线程。 如果在应用程序内部需要自行调用来提供业务并发能力时,我们可以使用Java21新特性:虚拟线程(VirtualThreads)中介绍的方法去创建和使用,比如较为常用的就是Executors.newVir...

  lnZqfDbuKjjk   2024年02月20日   65   0   0 Java

最近《幻兽帕鲁》和《雾锁王国》非常火热,玩过的小伙伴们都说非常上头!有跟朋友对战需求的小伙伴们可以通过本文拥有一台高性价比的专用服务器,随时可以用来跟朋友一起玩游戏! 敲重点!!! 步骤非常简单,就算你不是程序员,也可以轻松完成!! 目前很多云服务商和淘宝上都有类似的服务,但DD对比下来,腾讯云目前是最具性价比的,所以这里给大家推荐一下 开服步骤 选择游戏 进入开服页面,入口链接:https://curl.qcloud.com/1mik3tYN 根据你要玩的游戏,点击不同的专区,目前支持:《幻兽帕鲁》和《雾锁王国》 选择机器配置 选择好游戏之后,下面会展现支持的规格(如下图所示)...

  lnZqfDbuKjjk   2024年02月19日   19   0   0 Java

有段时间没有更新IDEA了,早上看到IntelliJIDEA2024.1EAP5发布的邮件提示,瞄了一眼,发现真的是越来越强了,其中不少功能对我来说还是非常有用的。也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。 Spring、Quarkus等主流框架的支持增强 SearchEverywhere功能中增加Endpoints选项卡 具体如下图所示: 开发者可以在这里直接搜索通过Spring、Quarkus、Micronaut、Ktor实现的接口来找到具体的代码实现位置。这个功能非常实用,尤其是对于接手老项目的开发者来说,可以快速的定位接口实现来完成开发任务或问题排查。 ...

  lnZqfDbuKjjk   2024年02月19日   54   0   0 Java

有这样一个带有搜索功能的用户界面需求: 搜索流程如下所示: 这个需求涉及两个实体: “评分(Rating)、用户名(Username)”数据与User实体相关 “创建日期(createdate)、观看次数(numberofviews)、标题(title)、正文(body)”与Story实体相关 需要支持的功能对User实体中的评分(Rating)的频繁修改以及下列搜索功能: 按User评分进行范围搜索 按Story创建日期进行范围搜索 按Story浏览量进行范围搜索 按Story标题进行全文搜索 按Story正文进行全文搜索 Postgres中创建表结构和索引 创建users表和s...

  lnZqfDbuKjjk   2024年02月19日   67   0   0 Java

之前已经分享过多篇关于SpringBoot中使用Java21新特性虚拟线程的性能测试案例: SpringBoot3.2虚拟线程搭建静态文件服务器有多快? SpringBoot虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较 早上看到群友问到一个关于虚拟线程遇到MySQL连接不兼容导致的性能问题: 这个问题确实之前就有看到过相关的评测,顺着个这个问题,重新把相关评测找出来,给大家分享一下。 以下内容主要参考文章:https://medium.com/deno-the-complete-reference/springboot-physical-vs-virtual-thr...

  lnZqfDbuKjjk   2024年01月19日   14   0   0 Java

工作流是我们开发企业应用几乎必备的一项功能,工作流引擎发展至今已经有非常多的产品。最近正好在接触Camunda,所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入,希望本文对您有所帮助。如果您是一名Java开发或Spring框架爱好者,欢迎关注我程序猿DD,持续非常技术干货。 Camunda简介 Camunda是一个灵活的工作流和流程自动化框架。其核心是一个运行在Java虚拟机内部的原生BPMN2.0流程引擎。它可以嵌入到任何Java应用程序和任何运行时容器中。 官网网站:https://www.camunda.org/ 入门文档:https://docs.camunda....

  lnZqfDbuKjjk   2024年01月18日   18   0   0 Java

在DD长期更新的Java新特性专栏中,已经介绍过Java16中开始支持的新特性:record的使用。 之前只是做了介绍,但没有结合之前的编码习惯或规范来聊聊未来的应用变化。最近正好因为互相review一些合作伙伴的代码,产生了一些讨论话题,主要正针对于有了record之后,其实之前有些用Lombok的场景,是可以替换掉了。 今天我们就来小小的总结下,我们可以在哪些地方,利用record来替换Lombok。 Lombok的威力 Lombok是我一直都喜欢使用的工具,因为它可以让我们的代码变的更加整洁。比如:当我们要写一个User对象的时候,如果不使用Lombok,往往需要写这么多内容: publ...

  lnZqfDbuKjjk   2024年01月12日   16   0   0 Java

本文我们一起看看SpringBoot中JdbcClient和JdbcTemplate之间的差异。 以下内容使用的Java和SpringBoot版本为: Java21 SpringBoot3.2.1 假设我们有一个ICustomerService接口: publicinterfaceICustomerService{ List<Customer>getAllCustomer(); Optional<Customer>getCustomerById(intid); voidinsert(Customercustomer); voidupdate(intid,Cu...

  lnZqfDbuKjjk   2024年01月10日   13   0   0 Java

之前分享了关于Spring新项目SpringAI的介绍视频。视频里演示了关于使用SpringAI将OpenAI的能力整合到Spring应用中的操作,但有不少读者提到是否有博客形式的学习内容。所以,本文就将具体介绍如何使用SpringAI快速让您的Spring应用拥有生成式AI的强大能力。 动手试试 第一步:使用你最喜欢的IDE来生成一个基础的SpringBoot项目。如果您还不会这个,建议先前往SpringBoot快速入门学习。 第二步:pom.xml中引入依赖。当前分为两个,AzureOpenAI和OpenAI,选择其中一个你在用的即可。 <dependency> <gro...

  lnZqfDbuKjjk   2024年01月09日   13   0   0 Java

SpringBoot3.2于2023年11月大张旗鼓地发布,标志着Java开发领域的一个关键时刻。这一突破性的版本引入了一系列革命性的功能,包括: 虚拟线程:利用ProjectLoom的虚拟线程释放可扩展性,从而减少资源消耗并增强并发性。 NativeImage支持:通过NativeImage编译制作速度极快的应用程序,减少启动时间并优化资源利用率。 JVM检查点:利用CRaC项目的JVM检查点机制实现应用程序的快速重启,无需冗长的重新初始化。 RestClient:采用新的RestClient接口的功能方法,简化HTTP交互并简化代码。 SpringforApachePulsar:利用Ap...

  lnZqfDbuKjjk   2024年01月05日   12   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~