SpringBoot
随缘记录SpringBoot的学习之路
这Leslie_Lau
有点儿阳光
展开
-
Maven中的DepencyManagement与Dependencies的区别
今天记录一下maven的pom文件中的两个属性:DepencyManagement,Dependencies博客比较短,就简单记录.Dependencies这个属性大家应该比较熟悉,就是引入依赖。这个属性可以算是pom文件的灵魂。里面可以放入若干的dependency,而dependency内可以放入jar包的坐标。有了这些坐标后,maven就会根据这些坐标去下载对应的jar。同时还会处理里面的依赖关系。DepencyManagement这个属性,目前我用的比较少。因为现在我还处于在单体应用开发原创 2020-07-08 13:34:58 · 1326 阅读 · 1 评论 -
使用thymeleaf与jquery实现页面的局部刷新(以显示学校的系为例)
假设有这么一个需求,我们需要在前端展示当前学校有多少个系。这个系的数据不能写死,因为后面可能随时会修改或者增加系的信息,而写死后每次修改系信息后就要回来修改前端代码,这是很麻烦的。这一篇博客就来记录一下怎么操作。有个思路就是后端写好接口,用来查询数据库获取当前的所有系后,存储到request域中。然后前端每次访问该页面都请求一次该接口,得到数据后遍历并填充到下拉表单中(select).这里service和dao的代码略过了,就是查询数据库并返回,po出controller的代码:controller原创 2020-05-17 12:01:57 · 2734 阅读 · 1 评论 -
SpringBoot学习之路---SpringBoot与它的监控端点们
SpringBoot为我们提供了监控管理的功能,我们可以通过一些http请求从而方便地观察当前应用程序的状态,这一篇就来记录一下 SpringBoot和它的监控端点们。首先,还是那句话,需要什么功能就引入对应功能的starter,这里我们直接通过spring initializr来创建项目并引入依赖:其中devtools是引入热部署,方便测试修改。web是为了直观看到(也必须要),actuator就是监控管理的依赖了。创建完项目后,直接启动,然后在控制台会看到:2020-05-11 09:11:原创 2020-05-11 14:32:46 · 333 阅读 · 0 评论 -
SpringBoot学习之路---超短博客完成开发热部署(devtools)
在开发中,往往会改代码,改完之后就要重启服务器,重启过程中呢就在等啊等,希望这次不会再有什么bug,结果往往不尽如人意…这一来一去,可能效果没改好,还浪费大把的时间。这一篇博客就记录一下这种情况的解决。我们就想有没有什么东西或者插件,让我们一改完代码,能够重新编译,而无需重启服务器呢?结果还真有,这种东西叫做"热部署",即改即用。热部署的插件有挺多,有的要收费,有的免费但是SpringBoot不怎么支持。这里介绍一个官方推荐的插件:devtools。使用它就两步.首先先引入它的依赖:<原创 2020-05-10 17:05:29 · 166 阅读 · 0 评论 -
SpringBoot学习之路---SpringBoot整合SpringCloud(Eureka&服务提供和消费)
上一篇博客记录了SpringCloud为我们提供了分布式一站式的解决方案,其中有个组件Eureka,它的作用是作为一个注册中心,服务提供者可以把服务注册到它上面,而服务消费者可以通过http协议的restful风格请求方式去获取该服务,这一篇博客主要介绍SpringBoot怎么去整合Eureka作为注册中心。我们要编写这种分布式的应用,那么就要创建一个空工程,再往里面添加各种模块,那么先创建一个空工程:这里我们有一个应用场景,假设有一个买票模块,它负责提供售票服务,另外有一个用户模块。浏览器访问用户原创 2020-05-10 13:05:20 · 267 阅读 · 0 评论 -
SpringBoot学习之路---SpringBoot、Dubbo、Zookeeper整合
承接上文,介绍了Dubbo与Zookeeper之后,这一篇博客就来记录一下怎么在SpringBoot项目中整合它们。首先因为Dubbo的架构设计,有服务提供者(provider) 和 服务消费者(consumer),那我们可以创建一个空项目,并往里面加入两个子模块,一个叫provider_ticket,另外一个是consumer_user。由前者提供服务,并注册到Zookeeper中,后者订阅...原创 2020-05-08 19:41:02 · 961 阅读 · 0 评论 -
小小Dubbo杂谈(简介)
这几年来技术发展特别快,微服务一词也是比较热门,行内行外的都津津乐道。今天要记录的主角Dubbo是其中的一员,但是它可不能完全代表微服务,Dubbo是基于面向服务的架构体系(SOA),而微服务其实是SOA某种程度上的扩展。是一种架构风格,新的准则,有兴趣的话可以查看martin fowler写的有关论文。扯远了,进入正文。为什么需要Dubbo呢?这里记录一下这个技术是怎么来的。我们最早编...原创 2020-05-07 13:46:28 · 284 阅读 · 0 评论 -
SpringBoot学习之路---简单记录整合SpringSecurity实现登录认证授权
基本上每一个项目都会有用户登录的这个功能,用户需要在登录之后才能够去访问一些资源,如果没登录的话就不能访问(403)。我们可以自己编码去实现这样的业务逻辑,当然每一次都自己去编码是比较耗时的,毕竟市面上已经有现成的开源的框架可以拿来使用了(Apache的shiro与Spring的Spring Security),这一篇的博客的主角就是介绍一下后者在SpringBoot中的整合配置,以及如何基本使用...原创 2020-05-06 19:33:01 · 428 阅读 · 0 评论 -
SpringBoot学习之路---发送带附件的邮件
这篇博客简单记录一下,如何通过SpringBoot发送带附件的邮件首先还是需要导入maven相关依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId>&...原创 2020-05-03 11:35:04 · 357 阅读 · 0 评论 -
SpringBoot学习之路---记录定时任务(@Scheduled)
有时在开发中我们会碰到,比如每周五定期分析一下日志,你可以人工手动到点去分析,但这样的话,那效率…一般都是写一些程序或者脚本到了指定的时间去分析对应的日志文件,这个要怎么做呢?这一篇博客就来简单记录一下。这里要引入一个注解(@Scheduled),在需要的方法上直接添加就可以了,它里面有一个属性cron,里面可以填写cron表达式。这是个啥呢,举个例子:@Scheduled(cron = "...原创 2020-05-02 12:36:01 · 581 阅读 · 0 评论 -
SpringBoot学习之路---记录异步任务(@Async注解)
我们在开发中,往往会碰到和多线程相关的问题。我们有时往往需要异步去解决问题,SpringBoot为我们提供了一个注解,接下来记录一下。这里假设有一个情景,编写一个service层的代码,需要等待3秒的时间,如果是同步的代码的话,在此过程中,用户只能等待3秒,期间什么事都不能做,不管对于系统还是用户来说,都是不好的。系统那段时间没有做事,会浪费时间,而用户等待过程中用户体验也不是很好。这里先编...原创 2020-05-01 21:36:31 · 303 阅读 · 0 评论 -
SpringBoot学习之路---整合jest操作ElasticSearch
我们可以使用java代码的方式去操作ElasticSearch,而SpringBoot也为我们提供了整合的方式,整合ElasticSearch并操作的方式有两种,这一篇博客来记录其中的一种 (整合jest去操作ES)老规矩,我们要使用某种技术,那么就要去导入它的maven相关依赖:<!-- https://mvnrepository.com/artifact/io.searchbox/...原创 2020-04-30 10:19:13 · 344 阅读 · 0 评论 -
SpringBoot学习之路---在Linux系统中通过Docker安装ElasticSearch
ElasticSerach的好处和优势很多博客都分析过了,这里就不做赘述。这一篇博客和题目一样,主要记录一下在Linux系统中通过Docker来安装ElasticSearch自从学了Docker之后,发现安装环境那些特别方便,往往几个命令就搞定了,这里也是一样。首先,使用命令检索一些有哪些版本(当然这一步可以省略):docker search elasticsearch下载官方版...原创 2020-04-28 23:54:05 · 175 阅读 · 0 评论 -
SpringBoot学习之路---使用RabbitTemplate操作RabbitMq
在学习了RabbitMq之后,我们知道当打开RabbitMq服务时,访问15672端口可以进入web管理界面,并且可以在里面操作,如发送消息,从某个队列中接受消息。但是我们平时在程序实际运行中,不可能一直手动地来完成这些操作(因为我们不知道什么时候需要发送接受消息,而且这样效率很低)。在基于消息队列的程序中,我们需要编写程序来完成从消息队列自动收发消息的操作,这一篇就来记录怎么使用java来完成这...原创 2020-04-28 18:10:47 · 20551 阅读 · 3 评论 -
SpringBoot学习之路---使用Docker安装RabbitMq
这篇博客来记录一下如何使用Docker来安装RabbitMq以及通过web界面来管理使用RabbitMq在此之前要确保电脑安装好docker。通过Docker安装RabbitMq下载镜像,先去DockerHub查看一下和RabbitMq有关的版本,这里选择官方版本,就是第一个:点进去之后,因为要使用web界面来管理RabbitMq,所以我们选择tag为management的版本:...原创 2020-04-27 20:03:19 · 265 阅读 · 0 评论 -
SpringBoot学习之路---短博客搞懂消息队列是个啥(仅入门)
大家在学习过程可能经常会看到"消息队列"、“RabbitMQ”、"Kafka"等等这些词。反正我关注的挺多公众号会推送这些的相关文章,但是还没有到那种应用场景,所以就没有去额外关注。最近刚刚好学习了一些有关消息队列的知识,就来记录一下首先先来聊一下...原创 2020-04-26 11:53:48 · 414 阅读 · 0 评论 -
SpringBoot学习之路---整合redis以及修改RedisTemplate的默认序列化器
在现实开发中,我们往往会用到缓存,而缓存的话就会用到一些第三方的组件,SpringBoot也为我们提供了这些自动配置类,会帮助我们自动注入相关组件,我们只需要引入相关的starter即可引入pom.xml的依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId...原创 2020-04-24 14:08:18 · 712 阅读 · 0 评论 -
SpringBoot学习之路---关于@CachePut注解的小坑
最近在学习SpringBoot有关缓存的这一块知识,遇到了一个小坑,今天来记录一下下问题不知道大家伙有没有碰到一个问题,在使用@CachePut注解来缓存之后,再次查询缓存,却发现还是老数据?先上原本controller的代码,这里为了方便,请求方式全部都为get请求:@RestController@RequestMapping("/user")public class UserCo...原创 2020-04-20 21:37:39 · 1453 阅读 · 0 评论 -
SpringBoot学习之路---@Cacheable初体验
承接之前的博客,今天主要来记录一下@Cacheable注解的使用环境准备首先我们需要创建一个SpringBoot项目,这里直接使用Spring Initializr来创建项目,之后勾选以下模块:其中web模块是为了观察方便,使用mybatis操作数据库比较方便,同时还要勾选Spring cache abstraction(Spring缓存抽象),这样就会帮我们引入一些缓存抽象和使用注解了...原创 2020-04-20 15:34:03 · 326 阅读 · 0 评论 -
SpringBoot学习之路---缓存小介绍(JSR107与Spring缓存抽象)
今天要介绍的东西和缓存有关。缓存有多有用?这里有一个场景:我们在进行一些数据访问时,每次都要去查询数据库,如果数据基本不变,那每次去查询数据库开销必然很大,会导致效率的流失。在这种情况下,我们引入缓存中间件,每次程序需要去查询数据时,先进行判断,如果在中间件里有数据了就直接取出来,如果没有数据再去数据库访问并将数据暂时存储在中间件中。这样做有一个好处就是大大减少了访问数据库的次数,从而增加了...原创 2020-04-19 19:38:15 · 249 阅读 · 0 评论 -
SpringBoot学习之路---跨域的基本介绍及SpringBoot解决CORS跨域问题
相信不少朋友们在前后端整合时,都会碰到跨域问题。特别是对于每一个前端开发者来说,这个问题就像是"狗皮膏药"般针对这个怎么解决?一般解决方向分为前端和后端,前端有个解决思路就是自己写一个后端模块,然后再去请求目标接口,经过处理再返回,而浏览器再去请求你自己写的这个后端模块,一般这种方式称为代理,比如nginx反向代理好像就是实现原理。但今天我们来讲讲后端基于SpringBoot的解决跨域的方式~...原创 2020-04-15 22:21:12 · 217 阅读 · 0 评论 -
记录在Linux远程服务器中后台运行SpringBoot项目
最近买了个学生云服务器,跃跃欲试地把之前写好的项目部署上去,直接一个java -jar命令运行项目,SpringBoot的好处太爽了,只需要一个java环境,连tomcat都不需要就可以直接运行。(咳咳扯远了…)部署起来是很方便,但是它运行的话很占据一整个终端界面,这时候你不能做别的操作,如果关掉终端的话会直接导致程序暂停,于是要想个方法让它在后台运行在网上看了许多资料,找到了一个方法,首先创...原创 2020-04-12 00:01:39 · 201 阅读 · 0 评论 -
填坑向---SpringBoot中设置jdbc的url连接参数问题
这几天在做一个小项目,所以没怎么更新博客,今天来记录一下遇到的一个和数据库连接参数有关的问题因为错误一直是循环显示某一个错误,所以直接列出关键错误:failed to parse the connection string near ';serverTimezone=GMT%2B8'.解析连接参数"serverTimezone=GMT%2B8"失败问题原因在这里,这一行代码我是直接从之...原创 2020-04-11 23:16:37 · 1838 阅读 · 0 评论 -
填坑向---自动注入JavaMailSender失败???
这篇博客记录一个比较粗心导致的错误,和JavaMailSender有关的,废话不多说,直接上错误:============================CONDITIONS EVALUATION REPORT============================Positive matches:----------------- AopAutoConfiguration ...原创 2020-04-09 20:01:49 · 5624 阅读 · 0 评论 -
SpringBoot学习之路---自定义starter
好久没有更新博客了,今天来记录一下starter的内部依赖原理,并自定义一个starterstarter是个啥,之前我的博客中已经反复提到了,简单来看它是一个场景启动器,一个又一个starter包含了我们所需要的一系列依赖。我们只需要导入它,剩下的一系列maven依赖&各种组件的配置等等,都不需要我们的担心了。这是为什么呢?首先先来看看,每个starter内部都会或多或少依赖于别的...原创 2020-04-08 22:19:11 · 157 阅读 · 0 评论 -
SpringBoot学习之路---整合基于注解的Mybatis
SpringBoot学习了那么久了,总要拿出来试试操作数据库了吧。以往我们使用JDBC或是JdbcTemplate来操作数据库时,往往开发效率太低,所以我们平时会用到Mybatis框架来作为持久层的技术。这一篇博客来记录一下SpringBoot如何整合基于注解的MyBatis要使用到Mybatis框架技术首先需要引入相关的jar包,之前我们就介绍过了SpringBoot是通过一个有一个的sta...原创 2020-04-05 16:46:06 · 199 阅读 · 0 评论 -
SpringBoot学习之路---整合Druid数据源及后台监控
之前的一篇博客记录到SpringBoot2.x默认使用的是hikari数据源,这个数据源性能非常好。但是今天要介绍的主角,druid它为我们提供了一系列的后台监控功能,能够使用它直观地看到当前数据库的使用情况。首先我们就要引入durid数据源,导入maven坐标依赖 <!-- 引入druid --> <!-- https://mvnrepository....原创 2020-04-04 16:41:54 · 258 阅读 · 0 评论 -
SpringBoot学习之路---数据访问&杂谈自动配置原理
SpringBoot底层与数据库打交道是基于 SpringData来操作的,今天就来简单记录下这其中的奥秘这篇博客不整合其他的ORM框架,仅仅使用jdbc的方式来探究原理。首先我们要访问数据库,就需要一个数据源,有关数据源的配置SpringBoot是放在DataSourceConfiguration中我们点进去发现这个类是和全局配置文件中的spring.datasource.type属性相...原创 2020-04-04 11:02:33 · 183 阅读 · 0 评论 -
SpringBoot学习之路---SpringBoot2.x执行建表语句
在SpringBoot1.x中,SpringBoot会自动帮我们读取相应名字的sql文件来自动建表(schema.sql/schema-all.sql),但SpringBoot2.x之后就需要自己调了.SpringBoot2.x默认是把自动建表关闭的,(关于自动建表的原理打算在之后的博客中记录),我们需要手动开启它,无非就是在全局配置文件中修改,以改变容器中的对应bean组件。这里以appl...原创 2020-04-03 23:24:36 · 1214 阅读 · 3 评论 -
SpringBoot学习之路---简单记录嵌入式Servlet容器的启动原理
在我的上一篇博客中简单记录了SpringBoot中嵌入式Servlet容器是如何实现自动配置的,并且如何读取我们自己编写的Customizer,这一篇博客来介绍一下这个嵌入式Servlet容器是如何启动的,并且联动之前的博客,来说明一下整个SpringBoot项目是如何跑起来的。这一篇博客与上一篇嵌入式自动配置的博客关系比较大,合起来可以大致明白整个SpringBoot项目的嵌入式Servle...原创 2020-04-01 16:57:06 · 132 阅读 · 0 评论 -
SpringBoot学习之路---嵌入式Servlet容器自动配置原理
上篇博客介绍了一下嵌入式Servlet容器怎么修改它的默认属性值,这篇博客简单记录一下嵌入式Servlet容器它是怎么帮我们配置的,以及我们自定义它的属性时,它又是怎么运转的?说起自动配置,我们现在应该不陌生了,无非就是XXXAutoConfiguration,今天的主角也是一样。EmbeddedServletContainerAutoConfiguration这个类就是帮我们自动配置嵌入式的...原创 2020-03-31 15:35:42 · 251 阅读 · 0 评论 -
SpringBoot学习之路---注册Servlet三大组件(servlet,filter,listener)
之前一篇博客记录了SpringBoot把我们以前的web.xml、server.xml这些配置文件都"砍掉"了,由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。那如果我们需要自定义一些filter、listener、servlet该怎么办呢?这一篇就来记录一下.SpringBoot为咱们提供了三个组件,...原创 2020-03-30 23:31:17 · 514 阅读 · 0 评论 -
SpringBoot学习之路---配置嵌入式Servlet容器
这篇介绍一下关于SpringBoot内置Servlet容器的定制和修改按照传统的SSM框架来进行开发web应用,我们开发测试完之后的步骤往往是把项目打成war包,然后使用ssh类似的协议传到服务器上,同时还要确保服务器上有tomcat之类的运行环境,并且运行时还要保证tomcat运行环境不出错。这样往往导致我们开发后的后续步骤太繁琐.SpringBoot帮我们内置了Servlet容器,我们现...原创 2020-03-30 16:23:52 · 260 阅读 · 0 评论 -
SpringBoot学习之路---配置自定义的异常处理器
我们在开发测试的时候难免会碰到各种各样的异常,如果在浏览器中碰到异常,类似404或者我们自己定义的异常,SpringBoot会使用它给我们默认提供的异常页面,这个用户体验不怎么友好,接下来我们就自己定制一个类似SpringMvc中的异常处理器,来解决这一问题。其实除了我们这个异常处理器,我们还有更简单的做法,但这个需要了解到SpringBoot的错误处理机制,这个我下一篇博客再去记录它。首...原创 2020-03-30 11:54:18 · 228 阅读 · 0 评论 -
SpringBoot学习之路---在SpringBoot中修改表单的提交方式(PUT,DELETE)
RESTFUL风格的编程方式,在我之前的一篇博客中有记录到,我们在RESTFUL的编程风格中对应增删改查的提交方式往往是post,delete,Put,get,但是HTML的表单默认只支持Get和Post方式来进行提交,下面介绍一下怎么通过SringBoot来修改表单的提交方式我们以前在SpringMVC中要修改表单的提交方式,就需要用到一个组件HiddenHttpMethodFilter,而...原创 2020-03-29 11:25:31 · 1280 阅读 · 2 评论 -
SpringBoot学习之路---抽取并引用thymeleaf的公共代码片段
有时候我们在多个html页面中会使用到多个相同的组件,比如我们有自己开发过电商平台的话,我们就会知道导航条和侧边栏是经常被复用的,就会想到抽取公共的代码片段,抽取的方式有很多,这里介绍thymeleaf的抽取和引用的方式我们在想要抽取的代码的标签上添加这个属性th:fragment="name"例(抽取bootstarp的导航条):<!--导航条--><nav clas...原创 2020-03-28 17:39:02 · 647 阅读 · 0 评论 -
SpringBoot学习之路---踩的关于WebMvcConfigurationSupport的小坑
最近在敲一个SpringBoot的练手项目,想自定义配置一个拦截器的,用来判断用户有没有登录,于是打算继承WebMvcConfigurerAdapter,然后来复写一些方法,结果SpringBoot5直接说已经过时了,推荐用WebMvcConfigurationSupport,于是一整天的找坑之路…public class LoginHandlerInterceptor implements ...原创 2020-03-27 21:16:22 · 474 阅读 · 0 评论 -
SpringBoot学习之路---一文搞懂SpringMvc自动配置
之前一篇博客记录了自动配置类的一些原理,今天我们来简单看看SpringBoot是怎么帮我们自动配置SpringMvc的要了解SpringMvc是怎么自动配置的,我们就要找到是哪个AutoConfiguration来自动SpringMvc所需要的组件的。我们去找自动配置类,看类名可以知道应该是这个自动配置类WebMvcConfiguration来配置SpringMvc所需要的组件,比如View...原创 2020-03-24 22:28:54 · 168 阅读 · 0 评论 -
SpringBoot学习之路---模版引擎之thymeleaf
在我们以前开发的时候,虽然现在已经前后端分离,但有时为了测试方便,我们还是会采用jsp技术,SpringBoot也当然支持,但默认是不允许的,我们需要引入它的各种依赖。可是在SpringBoot中使用jsp总会出现各种各样的问题,所以我们使用SpringBoot推荐的thymeleaf模版引擎技术来进行视图层的渲染什么是模版引擎呢?下面有一张图:简单点来说就是我们先编好页面,然后在页面中...原创 2020-03-24 18:02:41 · 219 阅读 · 0 评论 -
SpringBoot学习之路---slf4j在SpringBoot中的使用
之前有篇博客介绍了日志框架们是怎么来的,它们的前世今生,而SpringBoot是使用slf4j+log4j来进行日志记录的,今天就来看看怎么来使用它们吧SpringBoot是采用启动器来管理我们的jar包的,而在每一个启动器中都会依赖与spring-boot-start这个依赖,而spring-boot-start底层都有spring-boot-logging这个依赖,也就是说假设我们开发的是...原创 2020-03-22 16:22:57 · 948 阅读 · 0 评论