1

SpringBoot中如何优雅的使用多线程

在 SpringBoot 应用中,经常会遇到在一个接口中,同时做事情1,事情2,事情3,如果同步执行的话,则本次接口时间取决于事情1 2 3执行时间之和;如果三件事同时执行,则本次接口时间取决于事情1 2 3执行时间最长的那个,合理使用多线程,可以大大缩短接口时间。那么在 SpringBoot 应用中如何优雅的使用多线程呢?Don't bb, show me code.快速使用SpringBoot应用中需要添加@EnableAsync注解,来开启异步调用,一般还会配置一个线程池,异步的方法交给特定的线程池完成,如下:@Configuration @EnableAsync public clas...

阅读全文>>

1

实践:把Springboot项目配置迁移至 Apollo 配置管理中心

导读:由于配置日益增多不方便管理且期望配置修改实时生效,因此笔者决定部署一个配置中心,经过分析对比之后决定采用携程开源的 Apollo 配置管理中心。本文分享笔者基于 Apollo 提供 quick start 搭建服务端,并将一个多环境配置的 Springboot 项目迁移至 Apollo 的实践,希望对各位熟悉 Apollo 有所帮助。本地部署 Apollo为了方便用户体验,其官方文档提供了一个 quick start 部署 Apollo 的方案。具体部署可参考官方文档。其主要步骤如下:创建 ApolloPortalDB创建 ApolloConfigDB修改 demo.sh 数据库信息启动...

阅读全文>>

2

SpringBoot数据源配置原理

在数据库访问过程中,“数据源”无疑是最重要的概念之一,它不仅可以对与数据库访问相关的各种参数进行封装和统一管理,还可以管理数据库连接池,提高数据库连接性能。目前,在市面上有很多优秀的开源数据源,例如DBCP、C3P0、Druid、HikariCP等等。在SpringBoot2.x中,则采用目前性能最佳的HikariCP作为其默认数据源。接下来,我们就来具体介绍下SpringBoot的默认数据源配置及其原理。DataSourceAutoConfiguration我们知道,SpringBoot中几乎所有的默认配置都是通过配置类XxxAutoConfiguration进行配置的,SpringBoot...

阅读全文>>

1

SpringBoot的核心注解

前言springboot的核心就是注解。springboot通过各种组合注解,极大地简化了spring项目的搭建和开发。在springboot中有一些注解是其中的关键,必须掌握。@Configuration@Configuration并不是一个新的注解,在Spring3.0时已经存在了。@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义...

阅读全文>>

1

Spring Security 两种资源放行策略,千万别用错了

事情的起因是这样,有小伙伴在微信上问了一个问题:就是他使用 Spring Security 做用户登录,等成功后,结果无法获取到登录用户信息,松哥之前写过相关的文章(奇怪,Spring Security 登录成功后总是获取不到登录用户信息?),但是他似乎没有看懂。考虑到这是一个非常常见的问题,因此我想今天换个角度再来和大伙聊一聊这个话题。Spring Security 中,到底该怎么样给资源额外放行?1.两种思路在 Spring Security 中,有一个资源,如果你希望用户不用登录就能访问,那么一般来说,你有两种配置策略:第一种就是在 configure(WebSecurity web) ...

阅读全文>>

1

浅谈SpringBoot自动装配

说在前面我们都知道Ioc和AOP是Spring的两大核心特性,而近年来随着SpringBoot的越来越“智能”化,开发人员使用SpringBoot的也越来越多,那SpringBoot帮我们做了什么,又有哪些特性呢?SpringBoot的特性创建独立的Spring应用;直接嵌入Tomcat、Jetty或Undertow等Web容器(不需要部署WAR文件);提供固化的“starter”依赖,简化构建配置;当条件满足时自动装配Spring或第三方类库;提供运维特性,如指标信息(Metrics)、健康检查及外部化配置;绝无代码生成,并且不需要XML配置;接下来,浅谈一下SpringBoot的自动装配特...

阅读全文>>

2

springboot项目注册为windows系统服务并设置开机自启

springboot项目注册为windows系统服务并设置开机自启关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置在Tomcat下面运行。关于springboot项目部署相对于之前简化了一些步骤,只需要在服务器中安装好jdk环境,然后执行java -jar xxx.jar就可以把项目跑起来,如下所示。我们通过传统--->改进版--->改进版plus--->最终版演变方式来一步步探讨一下。1、方式一(传统版)(1)假设这是win...

阅读全文>>

1

Springboot中接口参数校验N种方法你会几个?

环境:springboot2.2.10.RELEASESpring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),结合BindingResult对象可以直接获取错误信息。JSR是什么?JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR...

阅读全文>>

1

SpringBoot咋使用PageHelper实现数据分页?

前言我们在做页面查询的时候由于页面无法一次性展示所有的数据,所以采用一种分段式的展示策略—分页查询,实现分页查询的方式有很多种方式,比如sql中的limit,mybatisplus带的分页插件等等,这里我们介绍一下如何在SpringBoot中使用PageHelper插件实现分页查询。正文PageHelperPageHelper是针对MyBatis最方便的分页插件PageHelper支持任何复杂的单表,多表查询。 它有以下特点:PageHelper不支持嵌套结果映射.PageHelper本质上是两次查询,第一次是对记录总数量的查询,第二次是对记录的查询。对记录的查询是利用了mybatis提供的拦...

阅读全文>>

1

分布式事务2阶段提交理论的落地方案seata的项目实战演示

背景看过我上一篇文章的小伙伴应该对seata 项目有了一个大概的认识,这一篇我就拿实际案例用户下订单->扣减库存->扣减用户余额,来演示。前期准备下载好seata-server 本示例以1.4.0版为例业务系统: 订单系统 仓储系统 用户系统所用框架 springboot , mybaits, httpclient项目调用结构实战引入jar包,spring-cloud-alibaba 版<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId&...

阅读全文>>