1
头图

SpringBoot 基于 Spring4.0 设计,不仅继承了 Spring 框架原有的优秀特性,而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。

另外 SpringBoot 通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

SpringBoot 所具备的特征有:

  • 可以创建独立的 Spring 应用程序,并且基于其 Maven 或 Gradle 插件,可以创建可执行的 JARs 和 WARs;
  • 内嵌 Tomcat 或 Jetty 等 Servlet 容器;
  • 提供自动配置的 “starter” 项目对象模型(POMS)以简化 Maven 配置;
  • 尽可能自动配置 Spring 容器;
  • 提供准备好的特性,如指标、健康检查和外部化配置;
  • 绝对没有代码生成,不需要 XML 配置。

本期技术周刊一起了解下 SpringBoot ,欢迎大家阅读 ~

文章推荐

《我服了!SpringBoot 升级后这服务我一个星期都没跑起来!》作者:艾小仙

最近由于各方面的原因在准备升级 Spring Cloud 和 Spring Boot,经过一系列前置的调研和分析,决定把Spring Boot 相关版本从 2.1.6 升级到 2.7.5,Spring Cloud 相关版本从 Greenwich.SR1 升级为 2021.0.4。

升级包含基础的业务服务代码的升级改造适配,还有就是中间件一堆代码的改造,上周经历了一周的修改,用来测试的服务仍然还没有跑起来,所以这篇文章我会记录下来这升级过程中的一些问题,由于革命仍未成功,所以这是上篇。

《几分钟上线一个项目文档网站,这款开源神器实在太香了!》作者:macrozheng

今天带大家体验了一把 Docsify,使用 Docsify 来搭建文档网站确实简单、快捷。对比使用 VuePress 和 Hexo 来搭建文档,虽然功能没有那么强大,但是 Docsify 无需编译、无需打包部署、修改响应迅速、对 Markdown 文档无污染这些优点还是值得肯定的。另外 Docsify 除了一些插件配置,其他配置基本可以使用 Markdown 来完成,感兴趣的小伙伴不妨尝试下它!

《Spring Boot 实现接口幂等性的 4 种方案》作者:Java 架构师

在接口调用时一般情况下都能正常返回信息不会重复提交,不过在遇见以下情况时可以就会出现问题,如:

  • 前端重复提交表单: 在填写一些表格时候,用户填写完成提交,很多时候会因网络波动没有及时对用户做出提交成功响应,致使用户认为没有成功提交,然后一直点提交按钮,这时就会发生重复提交表单请求。
  • 用户恶意进行刷单: 例如在实现用户投票这种功能时,如果用户针对一个用户进行重复提交投票,这样会导致接口接收到用户重复提交的投票信息,这样会使投票结果与事实严重不符。
  • 接口超时重复提交: 很多时候 HTTP 客户端工具都默认开启超时重试的机制,尤其是第三方调用接口时候,为了防止网络波动超时等造成的请求失败,都会添加重试机制,导致一个请求提交多次。
  • 消息进行重复消费: 当使用 MQ 消息中间件时候,如果发生消息中间件出现错误未及时提交消费信息,导致发生重复消费。

使用幂等性最大的优势在于使接口保证任何幂等性操作,免去因重试等造成系统产生的未知的问题。

《Springboot 一行代码实现文件上传 20 个平台!少写代码到极致》作者:程序员小富

文件上传在平常不过的一个功能,做后端开发的基本都会接触到,虽然不难可着实有点繁琐。数据流的开闭、读取还容易出错,尤其是在对接一些 OSS 对象存储平台,一个平台一堆 SDK 代码看起来乱糟糟的。

下边给我大家推荐一个工具 Spring File Storage,上传文件只要些许配置一行代码搞定,开发效率杠杠的,一起看看是不是有这么流批!

《从 SpringBoot 启动,阅读源码设计》作者:知了一笑

初学 SpringBoot 框架时,第一次启动服务,直呼什么鬼?只需要简单的几步配置,几个核心的注解,就可以快速实现工程的搭建和运行;

虽然从 Spring 框架迁移到 SpringBoot 框架,在初期会有很多的不适应,但是更好用的框架会快速得到认可,从而成为主流的技术选型;

对于大多数的框架或者组件来说,如果使用起来越是简便,那么其内部的封装策略就越是复杂;

比如在 Spring 框架更新到 SpringBoot 版本时,其用法的简便与内部封装的复杂性已经形成强烈的对比;再到 SpringCloud 微服务框架时,其封装逻辑复杂到离谱;

对于服务端的开发来说,绕不开对 Spring 框架的深度学习,如果单纯站在源码阅读的角度,建议先熟读 SpringBoot 启动流程,然后再适当扩展其他源码块;

《如何查询已经执行过的流程信息?》作者:江南一点雨

查询历史流程的方式很简答,如下:

@SpringBootTest
public class HiTest {

    @Autowired
    HistoryService historyService;
    private static final Logger logger = LoggerFactory.getLogger(HiTest.class);

    @Test
    void test01() {
        List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().list();
        for (HistoricProcessInstance hi : list) {
            logger.info("==={},{},{},{},{},{}",hi.getId(),hi.getName(),hi.getStartActivityId(),hi.getStartTime(),hi.getEndActivityId(),hi.getEndTime());
        }
    }
}

由于我们这是 Spring Boot 项目,所以基本上不需要什么额外的配置,直接注入 HistoryService 实例即可。

《手把手教大家在 Spring Boot 中处理 flowable 中的用户和组!》作者:
江南一点雨

虽然说我们在实际开发中,很少会直接用到 flowable 中的用户体系,但是,也不太可能完全用不到,毕竟官方设计了这个东西,而存在就必然有其合理性,所以,今天松哥还是来和大家聊一聊,在 Spring Boot 项目中,我们如何去添加、删除、修改一个用户或者组。

问答推荐

关于 SpringBoot 的问题,还有未解决的,欢迎正在阅读的小伙伴们一起来解决!


# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。

每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。

如有问题可以添加小姐姐微信~

image.png


Beverly
882 声望2.1k 粉丝

怂人面前全是坑,努力填坑 。