首页 文章 精选 留言 我的

精选列表

搜索[Springboot],共4376篇文章
优秀的个人博客,低调大师

🎉Feat v2.2.0 发布:像 SpringBoot 一样好写,比 Vert.x 快两倍

先给第一次了解 Feat 的朋友一句话介绍: Feat 是一款国产 Java Web 框架,开发体验近似 Spring Boot,运行速度远超 Vert.x 集成自研 smart-socket 引擎,支持 HTTP/2、WebSocket,编译期生成代码零反射,启动快、内存小、吞吐量高。 前段时间我们发了篇文章《Spring Boot 内嵌 Tomcat,是进步还是退步?》,评论区那叫一个热闹。 有人说 Spring Boot 太重了,有人说 Tomcat 已经够用了,还有人认为包体积轻不轻量化无所谓,性能才是硬道理。 好,那今天咱们就聊点硬核的——Feat v2.2.0 正式发布,看看 smart-servlet 的 web 内核在性能上到底能有多刚。 一、这次最狠的更新:我们把 Servlet 的"义肢"给拆了 先划重点,这条更新比其他所有功能加起来都重要: ReadListener 和 WriteListener 标记为已弃用,该功能仅用于适配 Jakarta Servlet 规范。 如果你看过我之前写的《Servlet 的三宗罪:Spring 的崛起,可能就是被它逼出来的》,应该对这段话有印象: "Servlet 的线程模型从骨子里就是'一个请求,一个线程',AsyncContext 只是想办法把容器线程提前释放出去,但编程模型依然是笨重的回调式……ReadListener / WriteListener 更典型——一种'轮询式异步',每次写之前都要先问一句'我现在能写吗',这种设计放在 2014 年看都已经显得落后于时代。" 现在,我们在 Feat 里把它正式标记为 Deprecated。 这不是为了标新立异。而是我们越来越确定一件事:一个规范如果连自己的官方生态都不愿意用(Spring WebFlux 直接绕开 Servlet API 另起炉灶),那它留着的唯一意义,可能就是给后来者提个醒——该删了。 Feat 从设计之初就不是 Servlet 的模仿者。我们保留这些接口,只是为了给迁移中的项目一个缓冲。但"兼容"不等于"认同",该画的线终究要画。 二、其他值得关注的更新 HTTP 客户端增强 • 新增 HttpOptions#maxConnections,支持配置 HTTP 连接池最大连接数 • 优化 HTTP 客户端长连接判定逻辑 HTTP/2 优化 • 优化推送请求中的 Cookie 处理逻辑 Server 稳定性 • 修复 upgrade 场景下解码异常的问题 Feat Cloud / AOT • 支持 feat.yml / feat-{env}.yml 多环境配置生成(社区用户强烈反馈的需求,终于安排上了!) 底层升级 • smart-socket 升级至 2.1.2 三、性能测试:Feat 把 Vert.x 按在地上摩擦 好了,最激动人心的部分来了。 我们拿 Feat、Vert.x 和 Spring Boot 三个框架做了横向对比,测试工具用的 wrk,场景是 Hello World 和 JSON 响应。 测试参数:4 线程,100 连接,持续 60 秒,开启延迟统计。 测试场景 Feat Vert.x Spring Boot Hello World 吞吐 155,939 RPS 82,268 RPS 49,905 RPS Hello World 延迟 0.79 ms 1.43 ms 3.60 ms JSON 响应吞吐 155,973 RPS 77,212 RPS 44,617 RPS JSON 响应延迟 0.82 ms 1.54 ms 2.27 ms Feat 的吞吐量约为 Vert.x 的 2 倍。 你没看错,是两倍。延迟更是低得离谱——Hello World 场景下只有 0.79ms,连 1 毫秒都不到。 测试代码全部开源在 Feat 仓库,测试环境为 GitHub Actions,欢迎复现。 快速开始 使用 Feat Cloud 创建一个简单的注解式 Web 应用: import tech.smartboot.feat.cloud.FeatCloud; import tech.smartboot.feat.cloud.annotation.Controller; import tech.smartboot.feat.cloud.annotation.RequestMapping; @Controller public class HelloWorld {     @RequestMapping("/hello")     public String hello() {         return "Hello, World!";     }     public static void main(String[] args) {         FeatCloud.cloudServer().listen();     } } Maven 依赖: <!-- 运行期依赖 --> <dependency>     <groupId>tech.smartboot.feat</groupId>     <artifactId>feat-cloud</artifactId>     <version>2.2.0</version> </dependency> <!-- 编译期转码 --> <dependency>     <groupId>tech.smartboot.feat</groupId>     <artifactId>feat-cloud-starter</artifactId>     <version>2.2.0</version>     <scope>provided</scope> </dependency> 写在最后 Feat 从诞生到今天,并不是为了证明某个框架不好。 我们真正想回答的是另一个问题: 如果今天重新设计一套 Java Web 框架,它应该是什么样子? 我们的答案是: 保留 Spring Boot 那样成熟、易用的开发体验; 不再依赖 Servlet 的历史设计; 尽可能把工作放到编译期完成,而不是运行期; 用更少的资源,支撑更高的性能。 这也是 Feat 一直坚持的发展方向。 v2.2.0 并不是终点,而是这个方向上的又一步。 如果你正在寻找一种不同于传统 Servlet 架构的 Java Web 开发方式,欢迎体验 Feat,也欢迎提出 Issue、参与 PR,一起把它做得更完善。 GitHub 地址:https://github.com/smartboot/feat 官方文档:https://smartboot.tech/feat

优秀的个人博客,低调大师

企业级后台开发痛点解决方案:SpringBoot3 全栈开发方案 Jboot-Plus 技术解析

前言 企业后台开发中,重复编写 CRUD、重复搭建权限体系、接口安全加密、微信生态对接都是各团队普遍会遇到的重复工作。不少开发者会选择成熟开源方案复用通用底层能力,本文客观拆解一套基于 Spring Boot 3 + Vue2.7 前后端分离开发框架 Jboot-Plus 的技术设计,仅作为技术选型参考,完整文档资料可自行检索站点 jboot.plus 查阅。 一、整体架构说明 Jboot-Plus 包含后端工程与配套前端管理后台,整合各类企业开发通用基础能力,减少新项目从零搭建底层逻辑的工作量。 技术栈构成: 后端:Spring Boot 3 + MyBatis-Flex 前端:Vue 2.7 + Element UI 前后端配套开发,统一适配,降低联调成本。 二、内置技术能力拆解 1. 多级权限与数据安全设计 权限、数据安全是后台系统基础需求,框架内置标准化实现逻辑: RBAC 四层权限结构:用户、角色、菜单、操作按钮分层管控,支持按钮级别的权限校验,适配复杂组织架构; 数据传输安全:采用 ChaCha20+RSA 混合加密传输,密码通过 BCrypt 哈希存储,附带请求签名、时间戳校验,防范接口重放; 服务防护:基于令牌桶实现接口限流,完整记录全流程操作日志,满足日志审计、行为追溯要求。 2. 封装通用业务基础设施 针对开发高频需求统一封装,减少重复开发: 文件存储:支持本地磁盘、腾讯云 COS、七牛云 Kodo 三种存储方式,内置多租户文件隔离逻辑,可灵活切换; 微信相关能力统一封装:整合公众号、小程序、企业微信、微信支付等接口封装,简化对接流程; 分布式配套:集成 Redisson 实现缓存与分布式锁;支持虚拟线程定时任务;WebSocket 实时消息推送;兼容 Spring Cloud Config 配置中心,支持配置动态更新。 3. 内置代码生成工具 依托 MyBatis-Flex 实现代码自动生成,输入数据表后批量生成基础业务代码: 后端:Entity、Mapper、Service、Controller、入参出参对象 VO/FO 前端:配套 Vue 页面、路由配置 单表基础增删改查代码自动生成,开发人员可集中精力处理定制化业务逻辑。 三、适配项目场景 从现有功能设计来看,该方案比较适合以下类型项目: 企业内部管理系统、OA、CRM; 存在多租户隔离需求的 SaaS 管理平台; 需要对接微信相关能力的中小型业务系统; 迭代速度要求高、希望减少底层基础开发工作量的开发团队。 四、开源相关说明 项目采用 Apache-2.0 开源协议,无商用限制,部署教程、在线演示等相关资料可在对应官方站点自行查阅。 总结 中小团队搭建后台系统,大量时间消耗在权限、安全、文件存储等通用基础模块。Jboot-Plus 整合成熟主流技术栈,封装企业开发高频通用能力,搭配代码生成工具,能够降低新项目初始化开发成本。 有后台系统批量开发需求的团队,可以自行查阅相关技术文档,结合自身业务场景判断是否适配自身项目架构。

优秀的个人博客,低调大师

即将到来的金三银四,这10道springboot常见面试题你需要了解下

1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂。只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。 如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。 因此,开始一个新的spring项目需要很多努力,因为我们现在必须从头开始做所有事情。 Spring Boot是解决这个问题的方法。Spring Boot已经建立在现有spring框架之上。使用spring启动,我们避免了之前我们必须做的所有样板代码和配置。 因此,Spring Boot可以帮助我们以最少的工作量,更加健壮地使用现有的Spring功能。 2.Spring Boot有哪些优点? · 减少开发,测试时间和努力。 · 使用JavaConfig有助于避免使用XML。 · 避免大量的Maven导入和各种版本冲突。 · 提供意见发展方法。 · 通过提供默认值快速开始开发。 · 没有单独的Web服务器需要。这意味着你不再需要启动Tomcat,Glassfish或其他任何东西。 · 更少的配置 因为没有web.xml文件。只需添加用@ Configuration注释的类,然后添加用@Bean注释的方法,Spring将自动加载对象并像以前 一样对其进行管理。您甚至可以将@Autowired添加到bean方法中,以使Spring自动装入需要的依赖关系中。 · 基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序:-Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后,Spring将在(application{environment} .properties)中加载后续的应用程序属性文件。 3.什么是JavaConfig? Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法。因此它有助于避免使用XML配置。使用JavaConfig的优点在于: 面向对象的配置。由于配置被定义为JavaConfig中的类,因此用户可以充分利用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。 减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。 JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。 从技术角度来讲,只使用JavaConfig配置类来配置容器是可行的,但实际上很多人认为将JavaConfig与XML混合匹配是理想的。 类型安全和重构友好。JavaConfig提供了一种类型安全的方法来配置Spring容器。由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找。 4.如何重新加载Spring Boot上的更改,而无需重新启动服务器? 这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。 5.Spring Boot中的监视器是什么? Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。 6.如何在Spring Boot中禁用Actuator端点安全性? 默认情况下,所有敏感的HTTP端点都是安全的,只有具有ACTUATOR角色的用户才能访问它们。 安全性是使用标准的HttpServletRequest.isUserInRole方法实施的。 我们可以使用management.security.enabled = false 来禁用安全性。只有在执行机构端点在防火墙后访问时,才建议禁用安全性。 如何在自定义端口上运行Spring Boot应用程序? 为了在自定义端口上运行Spring Boot应用程序,您可以在application.properties中指定端口。 server.port = 8090 7.什么是YAML? YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。 8.如何实现Spring Boot应用程序的安全性? 为了实现Spring Boot的安全性,我们使用 spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。 9.如何集成Spring Boot和ActiveMQ? 对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq 依赖关系。 它只需要很少的配置,并且不需要样板代码。 10.如何使用Spring Boot实现分页和排序? 使用Spring Boot实现分页非常简单。使用Spring Data-JPA可以实现将可分页的org.springframework.data.domain.Pageable传递给存储库方法。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册