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...

阅读全文>>

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

浅谈SpringBoot自动装配

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

阅读全文>>

1

撸个Spring Boot中的starter,解密自动化配置

starter背景Spring Boot目前已经变成了后端开发者必备技能之一,其中一个主要原因是Spring Boot中有个非常重要的机制(starter机制)。starter能够抛弃以前繁杂的配置,将其统一集成进starter,使用的时候只需要在maven中引入对应的starter依赖即可,Spring Boot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,以及各种配置信息的烦恼。SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。Spring Boot提供了针对日常企业应用研发各种场景的spring...

阅读全文>>

1

Spring Boot搭建 ELK,这才是正确看日志的方式

在看大型网站的中间件技术,对于Elasticsearch有点兴趣,所以将配置流程记录了一下。为什么要用ELK“ELK实际上是三个工具,Elastricsearch + LogStash + Kibana,通过ELK,用来收集日志还有进行日志分析,最后通过可视化UI进行展示。一开始业务量比较小的时候,通过简单的SLF4J+Logger在服务器打印日志,通过grep进行简单查询,但是随着业务量增加,数据量也会不断增加,所以使用ELK可以进行大数量的日志收集和分析”简单画了一下架构图在环境配置中,主要介绍Mac和linux配置,windows系统大致相同,当然,前提是大家都安装了JDK1.8及以上版...

阅读全文>>

0

从零开始搭建Kafka+SpringBoot分布式消息系统

前言由于kafka强依赖于zookeeper,所以需先搭建好zookeeper集群。由于zookeeper是由java编写的,需运行在jvm上,所以首先应具备java环境。(ps:默认您的centos系统可联网,本教程就不教配置ip什么的了)(ps2:没有wget的先装一下:yum install wget)(ps3:人啊,就是要条理。东边放一点,西边放一点,过段时间就不知道自己装在哪里了。本教程所有下载均放在/usr/local目录下)(ps4:kafka可能有内置zookeeper,感觉可以越过zookeeper教程,但是这里也配置出来了。我没试过)一、配置jdk因为oracle 公司不允...

阅读全文>>

0

springboot中定时任务执行Quartz的使用

环境:springboot2.2.11.RELEASE2种方式执行定时任务1、通过springboot的方式2、使用Quartz实现定时任务方式一:通过springboot的定时任务1、开启定时任务功能@EnableScheduling@SpringBootApplication @EnableScheduling public class SpringBootQuartzSchedulerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootQuartzSchedu...

阅读全文>>

0

手写一个注解实现接口单位时间内的访问频率的拦截器

目标相信大家都听过接口安全,接口限流等这些词语,那么本篇文章就是从最基本的问题开始,带大家手写一个控制接口单位时间内访问频率的demo。好了,下面开始上代码。环境+依赖spring boot工程就不在此搭建了,小编直接贴出核心依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.3.0.RELEASE</v...

阅读全文>>

0

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

springboot项目注册为Linux的服务并设置开机自启动一般项目生产环境都在Linux上面跑,所以今天我们来讲一下如何在Linux中将springboot项目注册为系统服务并设置开机自启动,这里我们以Centos7.6为例。1、上传我们的springboot项目的jar包如下图所示:名为demo-0.0.1-SNAPSHOT.jar 2、 启动项目java -jar demo-0.0.1-SNAPSHOT.jar补充:可能存在极少数是这样(或者类似)来启动springboot项目,其实这里的这种方式启动跟window中开启cmd窗口启动类似,这里不能退出交互,例如:Ctrl+C就会被ki...

阅读全文>>