
SpringBoot
文章平均质量分 84
于大圣
分享编程那点事~
展开
-
Springboot应用中线程池配置教程(2021版)
前言:日常开发中我们常用ThreadPoolExecutor提供的线程池服务帮我们管理线程,在Springboot中更是提供了@Async注解来简化业务逻辑提交到线程池中执行的过程。由于Springboot中默认设置的corePoolSize=1和queyeCapacity=Integer.MAX_VALUE,相当于采用单线程处理所有任务,这就与多线程的目的背道而驰,所以这就要求我们在使用@Async注解时要配置线程池。本文就讲述下Springboot应用下的线程池配置。背景知识:Springboot中原创 2021-03-15 20:26:21 · 18021 阅读 · 18 评论 -
Spring注解之@Import用法解析
前言:最近在回顾阅读Springboot源码时发现框架层面大量使用@Import注解,特别是Springboot自动装配机制更是大量使用该注解,搜索部分结果图如下。简单来说就是Springboot中用到了Spring中的@Import注解来帮助实现自动装配。那么本篇博客就来结合@Import注解源码,学习下该注解的日常使用以便进一步理解Springboot自动装配原理。Spring中@Import注解的出现是Spring迈向注解化道路上重要的一步,一般结合@Configuration注解来使用来导入原创 2021-01-30 11:20:15 · 807 阅读 · 0 评论 -
Springboot项目固化依赖的那点事
前言:在正式理解parent元素之前,假定你已经阅读maven的聚合和继承详解这篇博客,对maven继承的原理有一定理解。众所周知,如果使用maven构建Springboot应用,那么pom文件中一般都会指定如下配置来引入Springboot,本文重点来了解下spring-boot-starter-parent下重点有哪些内容,然后探讨下如果当前应用已存在parent的前提下如何改造项目依然使用springboot功能<parent> <groupId>org.springf原创 2021-01-24 20:27:50 · 1226 阅读 · 1 评论 -
maven的聚合和继承详解(2021版)
使用场景什么是聚合什么是继承原创 2021-01-22 22:06:07 · 1576 阅读 · 0 评论 -
java -jar命令引导启动Springboot项目的那点事
前言:java -jar命令并不是专门用于启动Springboot项目的,而是Java官方用于运行jar包中某个字节码文件的通用命令。比如通过java -jar XXX.jar来运行应用时,如不做特殊设置就要求在jar文件中必须包含META-INF/MANIFEST.MF文件,且通过类似Main-Class: org.springframework.boot.loader.JarLauncher来指定需要运行的字节码类文件全路径名,有点类似jre中的java-cp XXX.jarorg.springf...原创 2021-01-19 21:38:05 · 1685 阅读 · 3 评论 -
spring-boot-maven插件repackage(goal)的那些事
前言:在打包Springboot项目成jar包时需要在pom.xml使用spring-boot-maven-plugin来增加Maven功能,在我的上一篇博客<<Maven生命周期和插件的那些事(2021版)>>中已经介绍过Maven和插件的关系,在此不再赘述,感兴趣的小伙伴可以点击链接了解下。那么到底spring-boot-maven插件到底增加了哪些功能并没有深入探讨,下面针对Maven的package命令,分使用和不适用spring-boot-maven插件两种情境下的控制台输原创 2021-01-14 19:46:04 · 27191 阅读 · 7 评论 -
getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析
当通过java -jar或者命令行mvn spring-boot:run的方式启动springboot项目时,会引导执行如下代码:public static void main(String[] args) throws Exception { new JarLauncher().launch(args);}调用JarLauncher不带参数的构造方法创建JarLauncher对象,根据Java的继承特性会调用父类中的createArchive方法,官方代码实现如下:protected原创 2021-01-08 12:40:30 · 3548 阅读 · 2 评论 -
springboot整合redis,推荐整合和使用案例(2021版)
背景:手下新人在初次使用springboot整合redis,大部分人习惯从网上检索到一份配置,然后不知其所以然的复制粘贴到项目中,网上搜索到的配置良莠不齐但又万变不离其宗。由于springboot最大化地简化了整合redis需要的配置,在用户只需要在配置文件(application.*)中配置少量参数就可以使用官方默认提供的RedisTemplate和StringRedisTemplate来操作redis。由于官方提供的*RedisTemplate提供的功能有限,难以针对java的复杂数据类型进行序列化,且原创 2021-01-05 20:09:34 · 32905 阅读 · 19 评论 -
基于redis(v3.2+)实现“附近的人”功能
背景介绍:目前随着电商、社交、游戏和代购等的流行,“附近的人”这一功能提供了一种便捷的方式允许同一地区或者一定距离范围内的用户进行相互交流的途径,一般都是在用户点击某个菜单或按钮时记录用户的坐标信息,拿微信的“附近的人”功能举例子,如下图所示,当你在点击附近的人时微信服务端会提示获取你所在位置的经纬度,记录到服务端,右上角的小脚印就表示你的经纬度信息被记录。然后服务端会根据你的位置信息拉取附近同样在服务器端有位置记录的用户信息,按照距离进行排序。一般来说“附近的人”功能只要能否大体反应距你多少米或千原创 2021-01-02 14:16:24 · 659 阅读 · 0 评论 -
Springboot项目结构浅析
每当我们通过IDE、spring官网gui或者maven命令行创建SpringBoot项目后,大致会有如下结构的项目,这个时候第一个念头就是对于默认创建的内容,我需要保留哪些,哪些删除掉。针对这个问题,本文对于陌生内容作出解释说明,对于项目必要内容,诸如src、pom.xml之流就不做解释,重点解释其它内容;1、.gitignore文件由于目前大多数应用开发使用git作为代码版本管理工具,所以官方默认提供该文件,作为不纳入git版本管理项的初始配置文件,里面定义了最常见的文件或目录的版本控制忽略原创 2020-12-31 20:20:52 · 1299 阅读 · 1 评论 -
Springboot实现邮件发送(2020最新版)
在正式讲解如何用Springboot发送邮件之前,先普及三个概念:1、邮件协议,简单理解下:小明给小红发了一封邮件,指的是小明登录邮箱客户端(比如通过浏览器登录QQ、163、126等),将需要发送的内容已邮件的方式发送到邮件服务器,等小红同样登录邮箱客户端后客户端去邮件服务器获取小红这个账户应该获取的邮件列表并下载到客户端,这样小红在客户端就可以查看小明发送过来的邮件,大体过程如下图,画的粗糙不要介意:2、通俗来说我们以通过浏览器登录网址的形式或者从邮箱服务提供商官网下载的邮箱客户端登录自己的账原创 2020-12-19 22:02:05 · 1887 阅读 · 1 评论 -
Springboot项目部署到外部Tomcat
前言:用过Springboot的同学都知道,Springboot采用了约定大于配置的思想,提供了大量简化配置的操作,使得我们从繁重的SpringMVC项目配置中解脱出来,只需要在.properties或者.yml文件上给指定的参数配置适当参数值即可,然后Springboot会自动应用;个人认为Springboot的优势在于提供快速便捷的开发模式,比如快速开发服务接口,通过mvn打包成jar包,然后...原创 2019-04-26 18:25:40 · 5900 阅读 · 2 评论 -
Springboot缓存实战笔记之概念篇
看过好多博客,在介绍Springboot缓存时,直接讲解使用,第一步把冰箱门打开...之类的,并没有对缓存概念做一些常规介绍,任何技术首先要做的就是去了解概念,本篇基于我自身阅读过的一些书籍,自身觉得比较重要的概念,以笔记的形式记录下,方便自己以及后来者,后续陆续会有缓存常见架构+使用的博客,请关注后续;关于缓存:只要是稍微做过点项目的同学肯定都会听到缓存这么个词汇,缓存并不神秘,缓存主要用来...原创 2019-03-24 19:41:39 · 355 阅读 · 1 评论