SpringBoot
文章平均质量分 65
SpringBoot学习
ITBOY_ITBOX
技术人生,管理天涯
展开
-
自定义监控指标
由于此端点数据spirng boot admin无法预知该如何展示,所以通过界面无法看到此数据,通过HTTP请求路径可以获取到当前端点的信息,但是需要先开启当前端点对外功能,或者设置当前端点为默认开发的端点。端点描述了被监控的信息,除了系统默认的指标,还可以自行添加显示的指标,下面就通过3种不同的端点的指标自定义方式来学习端点信息的二次开发。通过配置的形式只能添加固定的数据,如果需要动态数据还可以通过配置bean的方式为info端点添加信息,此信息与配置信息共存。通过编程的形式可以扩展指标信息。原创 2022-10-12 08:51:04 · 276 阅读 · 0 评论 -
定时任务框架
springboot整合第三方技术我们来说说任务系统,其实这里说的任务系统指的是定时任务。定时任务是企业级开发中必不可少的组成部分,诸如长周期业务数据的计算,例如年度报表,诸如系统脏数据的处理,再比如系统性能监控报告,还有抢购类活动的商品上架,这些都离不开定时任务。本节将介绍两种不同的定时任务技术。原创 2022-10-11 08:33:47 · 173 阅读 · 0 评论 -
SpringBoot消息中间件概念与介绍
例如发送被翻译的文字仅到A程序,而A程序只能进行翻译操作,这样就可以发送简单的信息完成复杂的业务了,是通过接收消息的主体不同,进而执行不同的操作,而不会在消息内部定义数据的操作行为,当然如果开发者希望消息中包含操作种类信息也是可以的,只是提出消息的内容可以更简单,更单一。这种模型下,生产者和消费者是一对一绑定的。单从上面的说明中其实可以明确感知到,AMQP的出现解决的是消息传递时使用的消息种类的问题,化繁为简,但是其并没有完全推翻JMS的操作API,所以说AMQP仅仅是一种协议,规范了数据传输的格式而已。原创 2022-10-11 08:33:28 · 479 阅读 · 0 评论 -
SpringBoot整合邮件系统
springboot整合邮件系统,发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发。学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于电子邮件的传输协议POP3(Post Office Protocol - Version 3):用于电子邮件的标准协议。原创 2022-10-11 08:32:53 · 1286 阅读 · 0 评论 -
SpringBoot整合RocketMQ
RocketMQ由阿里研发,后捐赠给apache基金会,目前是apache基金会顶级项目之一,也是目前市面上的MQ产品中较为流行的产品之一,它遵从AMQP协议。原创 2022-10-11 08:32:31 · 542 阅读 · 0 评论 -
SpringBoot整合ActiveMQ
ActiveMQ是MQ产品中的元老级产品,早期标准MQ产品之一,在AMQP协议没有出现之前,占据了消息中间件市场的绝大部分份额,后期因为AMQP系列产品的出现,迅速走弱,目前仅在一些线上运行的产品中出现,新产品开发较少采用。原创 2022-10-11 08:32:03 · 1604 阅读 · 0 评论 -
SpringBoot整合Kafka
使用注解@KafkaListener定义当前方法监听Kafka中指定topic的消息,接收到的消息封装在对象ConsumerRecord中,获取数据从ConsumerRecord对象中获取即可。运行bin目录下的windows目录下的kafka-server-start命令即可启动kafka服务器,默认对外服务端口9092。Kafka提供有一套测试服务器功能的测试程序,运行bin目录下的windows目录下的命令即可使用。:使用消息监听器在服务器启动后,监听指定位置,当消息出现后,立即消费消息。原创 2022-10-11 08:31:39 · 1007 阅读 · 0 评论 -
SpringBoot整合RabbitMQ
RabbitMQ是MQ产品中的目前较为流行的产品之一,它遵从AMQP协议。RabbitMQ的底层实现语言使用的是Erlang,所以安装RabbitMQ需要先安装Erlang。下载完毕后得到exe安装文件,一键傻瓜式安装,安装完毕需要重启,需要重启,需要重启。安装的过程中可能会出现依赖Windows组件的提示,根据提示下载安装即可,都是自动执行的,如下:Erlang安装后需要配置环境变量,否则RabbitMQ将无法找到安装的Erlang。需要配置项如下,作用等同JDK配置环境变量的作用。原创 2022-10-11 08:31:19 · 324 阅读 · 0 评论 -
SpringBoot监控之监控的意义
虽然软件是对外提供用户的访问需求,完成对应功能的,但是后台的运行是否平稳,是否出现了不影响客户使用的功能隐患,这些也是要密切监控的,此时就需要在不停机的情况下,监控系统运行情况,日志是一个不错的手段。新的程序专门用来监控,新的问题就出现了,是被监控程序主动上报信息还是监控程序主动获取信息?被监控程序可以提供各种各样的指标数据给监控程序看,但是每一个指标都代表着公司的机密信息,并不是所有的指标都可以给任何人看的,乃至运维人员,所以对被监控指标的是否开放出来给监控系统看,也需要做详细的设定。原创 2022-10-11 08:30:59 · 207 阅读 · 0 评论 -
SpringBoot可视化监控平台
我们做的程序如果需要被监控,将我们做的程序制作成客户端,然后配置服务端地址后,服务端就可以通过HTTP请求的方式从客户端获取对应的信息,并通过UI界面展示对应信息。所以你看到的信息基本上就没什么内容了,只能看到一个内容,就是下面的健康信息。然后就有好心的同志根据监控的总思想,制作了一个通用性很强的监控系统,因为是基于springboot监控的核心思想制作的,所以这个程序被命名为。以上界面中展示的信息量就非常大了,包含了13组信息,有性能指标监控,加载的bean列表,加载的系统属性,日志的显示控制等等。原创 2022-10-11 08:30:41 · 1498 阅读 · 0 评论 -
SpringBoot整合j2cache缓存
此处配置不能乱配置,需要参照官方给出的配置说明进行。例如1级供应商选择ehcache,供应商名称仅仅是一个ehcache,但是2级供应商选择redis时要写专用的Spring整合Redis的供应商类名SpringRedisProvider,而且这个名称并不是所有的redis包中能提供的,也不是spring包中提供的。一级与二级缓存最重要的一个配置就是两者之间的数据沟通方式,此类配置也不是随意配置的,并且不同的缓存解决方案提供的数据沟通方式差异化很大,需要查询官方文档进行设置。原创 2022-10-11 08:30:18 · 1227 阅读 · 0 评论 -
SpringBoot整合jetcache缓存
springboot针对缓存的整合仅仅停留在用缓存上面,如果缓存自身不支持同时支持AB一起用,springboot也没办法,所以要想解决AB缓存一起用的问题,就必须找一款缓存能够支持AB两种缓存一起用,有这种缓存吗?还真有,阿里出品,jetcache。jetcache严格意义上来说,并不是一个缓存解决方案,只能说他算是一个缓存框架,然后把别的缓存放到jetcache中管理,这样就可以支持AB缓存一起用了。原创 2022-10-10 21:45:10 · 1841 阅读 · 0 评论 -
SpringBoot整合Memcached缓存
memcached目前提供有三种客户端技术,分别是Memcached Client for Java、SpyMemcached和Xmemcached,其中性能指标各方面最好的客户端是Xmemcached,本次整合就使用这个作为客户端实现技术了。由于memcached未被springboot收录为缓存解决方案,因此使用memcached需要通过手工硬编码的方式来使用,于是前面的套路都不适用了,需要自己写了。上述代码中对于服务器的配置使用硬编码写死到了代码中,将此数据提取出来,做成独立的配置属性。原创 2022-10-10 21:23:48 · 171 阅读 · 0 评论 -
SpringBoot整合Redis缓存
比对使用Ehcache的过程,加坐标,改缓存实现类型为ehcache,做Ehcache的配置。一模一样,加坐标,改缓存实现类型为redis,做redis的配置。差别之处只有一点,redis的配置可以在yml文件中直接进行配置,无需制作独立的配置文件。如果需要对redis作为缓存进行配置,注意不是对原始的redis进行配置,而是配置redis作为缓存使用相关的配置,隶属于spring.cache.redis节点下,注意不要写错位置了。:配置缓存技术实现使用redis。:导入redis的坐标。原创 2022-10-10 21:09:24 · 79 阅读 · 0 评论 -
SpringBoot整合Ehcache缓存
到这里springboot整合Ehcache就做完了,可以发现一点,原始代码没有任何修改,仅仅是加了一组配置就可以变更缓存供应商了,这也是springboot提供了统一的缓存操作接口的优势,变更实现并不影响原始代码的书写。配置缓存的类型type为ehcache,此处需要说明一下,当前springboot可以整合的缓存技术中包含有ehcach,所以可以这样书写。其实springboot整合缓存技术做的是通用格式,不管你整合哪种缓存技术,只是实现变化了,操作方式一样。:配置缓存技术实现使用Ehcache。原创 2022-10-10 21:07:18 · 685 阅读 · 0 评论 -
SpringBoot内置缓存解决方案
在业务方法上面使用注解@Cacheable声明当前方法的返回值放入缓存中,其中要指定缓存的存储位置,以及缓存中保存当前方法返回值对应的名称。上例中value属性描述缓存的存储位置,可以理解为是一个存储空间名,key属性描述了缓存中保存数据的名称,使用#id读取形参中的id值作为缓存名称。springboot技术提供有内置的缓存解决方案,可以帮助开发者快速开启缓存技术,并使用缓存技术进行数据的快速操作,例如读取缓存数据和写入数据到缓存。:导入springboot提供的缓存技术对应的starter。原创 2022-10-10 20:54:59 · 250 阅读 · 0 评论 -
提速之王--缓存
为了改善上述现象,开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制,该区域中的数据在内存中保存,读写速度较快,可以有效解决数据库访问效率低下的问题。这一块临时存储数据的区域就是缓存。此外缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以提供临时的数据存储空间。缓存是一种介于数据永久存储介质与应用程序之间的数据临时存储介质,使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高系统性能。使用缓存后,应用程序与缓存打交道,缓存与数据库打交道,数据访问效率提高。原创 2022-10-10 20:50:27 · 211 阅读 · 0 评论 -
SpringBoot整合MongoDB
使用Redis技术可以有效的提高数据访问速度,但是由于Redis的数据格式单一性,无法操作结构化数据,当操作对象型的数据时,Redis就显得捉襟见肘。在保障访问速度的情况下,如果想操作结构化数据,看来Redis无法满足要求了,此时需要使用全新的数据存储结束来解决此问题,springboot如何整合MongoDB技术。MongoDB是一个开源、高性能、无模式的文档型数据库,它是NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库。上述描述中几个词,其中对于我们最陌生的词是无模式的。原创 2022-10-10 20:40:01 · 563 阅读 · 0 评论 -
SpringBoot整合Redis
Redis是一款采用key-value数据存储格式的内存级NoSQL数据库,重点关注数据存储格式,是key-value格式,也就是键值对的存储形式。与MySQL数据库不同,MySQL数据库有表、有字段、有记录,Redis没有这些东西,就是一个名称对应一个值,并且数据以存储在内存中使用为主。什么叫以存储在内存中为主?其实Redis有它的数据持久化方案,分别是RDB和AOF,但是Redis自身并不是为了数据持久化而生的,主要是在内存中保存数据,加速数据访问的,所以说是一款内存级数据库。Redis支持多种数据存原创 2022-10-10 08:32:18 · 591 阅读 · 0 评论 -
SpringBoot整合ES
NoSQL解决方案已经讲完了两种技术的整合了,Redis可以使用内存加载数据并实现数据快速访问,MongoDB可以在内存中存储类似对象的数据并实现数据的快速访问,在企业级开发中对于速度的追求是永无止境的。下面的内容也是一款NoSQL解决方案,只不过他的作用不是为了直接加速数据的读写,而是加速数据的查询的,叫做ES技术。ES(Elasticsearch)是一个分布式全文搜索引擎,重点是全文搜索。那什么是全文搜索呢?原创 2022-10-10 08:31:59 · 24130 阅读 · 5 评论 -
数据层解决方案(SQL)
H2内嵌式数据库启动方式,添加坐标,添加配置H2数据库线上运行时请务必关闭到这里SQL相关的数据层解决方案就讲完了,现在的可选技术就丰富的多了。数据源技术:Druid、Hikari、tomcat DataSource、DBCP持久化技术:MyBatisPlus、MyBatis、JdbcTemplate数据库技术:MySQL、H2、HSQL、Derby现在开发程序时就可以在以上技术中任选一种组织成一套数据库解决方案了。原创 2022-10-10 08:31:39 · 184 阅读 · 0 评论 -
配置高级(数据类型转换)
这个问题就处在这里了,因为0127在开发者眼中是一个字符串“0127”,但是在springboot看来,这就是一个数字,而且是一个八进制的数字。其实看到这个报错,几乎所有的学习者都能分辨出来,这是用户名和密码不匹配,就就是密码输入错了,但是问题就在于密码并没有输入错误,这就比较讨厌了。这里提两个注意点,第一,字符串标准书写加上引号包裹,养成习惯,第二,遇到0开头的数据多注意吧。这名开发者的生日是1月27日,所以密码就使用了0127,其实问题就出在这里了。属性注入时,持二进制,八进制,十六进制。原创 2022-10-09 21:52:12 · 104 阅读 · 0 评论 -
配置高级(校验)
目前我们在进行属性绑定时可以通过松散绑定规则在书写时放飞自我了,但是在书写时由于无法感知模型类中的数据类型,就会出现类型不匹配的问题,比如代码中需要int类型,配置中给了非法的数值,例如写一个“a",这种数据肯定无法有效的绑定,还会引发错误。在JAVAEE的JSR303规范中给出了具体的数据校验标准,开发者可以根据自己的需要选择对应的校验框架,此处使用Hibernate提供的校验框架来作为实现进行数据校验。书写应用格式非常固定。SpringBoot给出了强大的数据校验功能,可以有效的避免此类问题的发生。原创 2022-10-09 21:48:16 · 141 阅读 · 0 评论 -
配置高级(常用计量单位绑定)
表示存储空间,可以通过@DataSizeUnit注解描述存储空间单位,例如上例中描述的单位为MB(DataUnit.MEGABYTES):表示时间间隔,可以通过@DurationUnit注解描述时间单位,例如上例中描述的单位为小时(ChronoUnit.HOURS)在前面的配置中,我们书写了如下配置值,其中第三项超时时间timeout描述了服务器操作超时时间,当前值是-1表示永不超时。使用上述两个单位就可以有效避免因沟通不同步或文档不健全导致的信息不对称问题,从根本上解决了问题,避免产生误读。原创 2022-10-09 21:45:30 · 209 阅读 · 0 评论 -
配置高级(宽松绑定/松散绑定)
原因就是在进行匹配时,配置中的名称要去掉中划线和下划线后,忽略大小写的情况下去与java代码中的属性名进行忽略大小写的等值匹配,以上4种命名去掉下划线中划线忽略大小写后都是一个词ipaddress,java代码中的属性名忽略大小写后也是ipaddress,这样就可以进行等值匹配了,这就是为什么这4种格式都能匹配成功的原因。为什么会出现这种问题,这就要来说一说springboot进行属性绑定时的一个重要知识点了,有关属性名称的宽松绑定,也可以称为宽松绑定。可以与下面的配置属性名规则全兼容。原创 2022-10-09 21:31:12 · 438 阅读 · 0 评论 -
ConfigurationProperties配置高级
为了解决这个问题,spring给我们提供了一个全新的注解,专门标注使用@ConfigurationProperties注解绑定属性的bean是哪些。:在配置类上开启@EnableConfigurationProperties注解,并标注要使用@ConfigurationProperties注解绑定属性的类。目前我们定义bean不是通过类注解定义就是通过@Bean定义,使用@ConfigurationProperties注解可以为bean进行属性绑定,在此注解的作用是用来为bean绑定属性的。原创 2022-10-09 21:19:35 · 395 阅读 · 0 评论 -
命令行启动常见问题及解决方案
关于打包与运行程序其实还有一系列的配置和参数,下面的内容中遇到再说,这里先开个头,知道如何打包和运行程序。在DOS环境下启动SpringBoot工程时,可能会遇到端口占用的问题。原创 2022-10-09 08:34:26 · 84 阅读 · 0 评论 -
SpringBoot热部署
简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍,这就是热部署。原创 2022-10-09 08:34:06 · 159 阅读 · 0 评论 -
SpringBoot参与热部署监控的文件范围配置
通过修改项目中的文件,你可以发现其实并不是所有的文件修改都会激活热部署的,原因在于在开发者工具中有一组配置,当满足了配置中的条件后,才会启动热部署,配置中默认不参与热部署的目录信息如下。以上目录中的文件如果发生变化,是不参与热部署的。如果想修改配置,可以通过application.yml文件进行设定哪些文件不参与热部署操作。原创 2022-10-09 08:33:42 · 116 阅读 · 0 评论 -
SpringBoot关闭热部署
其实上述担心略微有点多余,因为线上环境的维护是不可能出现修改代码的操作的,这么做唯一的作用是降低资源消耗,毕竟那双盯着你项目是不是产生变化的眼睛只要闭上了,就不具有热部署功能了,这个开关的作用就是禁用对应功能。如果当心配置文件层级过多导致相符覆盖最终引起配置失效,可以提高配置的层级,在更高层级中配置关闭热部署。例如在启动容器前通过系统属性设置关闭热部署功能。线上环境运行时是不可能使用热部署功能的,所以需要强制关闭此功能,通过配置可以关闭此功能。原创 2022-10-09 08:33:18 · 1259 阅读 · 0 评论 -
SpringBoot程序的打包与运行
SpringBoot程序是基于Maven创建的,在Maven中提供有打包的指令,叫做package。在使用向导创建SpringBoot工程时,pom.xml文件中会有如下配置,这一段配置千万不能删除,否则打包后无法正常执行程序。如果你的计算机中没有安装java的jdk环境,是无法正确执行上述操作的,因为程序执行使用的是java指令。打包后会产生一个与工程名类似的jar文件,其名称是由模块名+版本号+.jar组成的。执行程序打包指令后,程序正常运行,与在Idea下执行程序没有区别。原创 2022-10-09 08:32:57 · 168 阅读 · 0 评论 -
SpringBoot临时属性设置
目前我们的程序包打好了,可以发布了。但是程序包打好以后,里面的配置都已经是固定的了,比如配置了服务器的端口是8080。如果我要启动项目,发现当前我的服务器上已经有应用启动起来并且占用了8080端口,这个时候就尴尬了。难道要重新把打包好的程序修改一下吗?比如我要把打包好的程序启动端口改成80。SpringBoot提供了灵活的配置方式,如果你发现你的项目中有个别属性需要重新配置,可以使用的方式快速修改某些配置。方法也特别简单,在启动的时候添加上对应参数就可以了。原创 2022-10-08 21:39:59 · 368 阅读 · 0 评论 -
SpringBoot自定义配置文件
之前咱们做配置使用的配置文件都是application.yml,其实这个文件也是可以改名字的,这样方便维护。比如我2020年4月1日搞活动,走了一组配置,2020年5月1日活动取消,恢复原始配置,这个时候只需要重新更换一下配置文件就可以了。但是你总不能在原始配置文件上修改吧,不然搞完活动以后,活动的配置就留不下来了,不利于维护。使用的属性一个是spring.config.name,另一个是spring.config.location,这个一定要区别清楚。也可以设置加载多个配置文件。原创 2022-10-08 21:26:55 · 1064 阅读 · 0 评论 -
SpringBoot配置文件分类
其实上述4种文件是提供给你了4种配置文件书写的位置,功能都是一样的,都是做配置的。总体上来说,4种配置文件如果都存在的话,有一个优先级的问题,说白了就是加入4个文件我都有,里面都有一样的配置,谁生效的问题。两个配置文件共存,因为config目录中的配置加载优先级比你的高,所以配置项如果和级别4里面的内容相同就覆盖了,这样是不是很简单?场景A:你作为一个开发者,你做程序的时候为了方便自己写代码,配置的数据库肯定是连接你自己本机的,咱们使用4这个级别,也就是之前一直用的application.yml。原创 2022-10-08 21:19:02 · 175 阅读 · 0 评论 -
SpringBoot多环境开发(properties多文件版)
SpringBoot最早期提供的配置文件格式是properties格式的,这种格式的多环境配置也了解一下吧。文件的命名规则为:application-环境名.properties。原创 2022-10-08 21:07:13 · 106 阅读 · 0 评论 -
SpringBoot多环境开发(yaml多文件版)
将所有的配置都放在一个配置文件中,尤其是每一个配置应用场景都不一样,这显然不合理,于是就有了将一个配置文件拆分成多个配置文件的想法。环境配置文件因为每一个都是配置自己的项,所以连名字都不用写里面了。那问题是如何区分这是哪一组配置呢?在配置文件中,如果某些配置项所有环境都一样,可以将这些项写入到主配置中,只有哪些有区别的项才写入到环境配置文件中。拆分后,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了。文件的命名规则为:application-环境名.yml。原创 2022-10-08 21:03:56 · 94 阅读 · 0 评论 -
SpringBoot多环境开发(yaml单一文件版)
什么是多环境?其实就是说你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样,这就是多环境。常见的多环境开发主要兼顾3种环境设置,开发环境——自己用的,测试环境——自己公司用的,生产环境——甲方爸爸用的。因为这是绝对不同的三台电脑,所以环境肯定有所不同,比如连接的数据库不一样,设置的访问端口不一样等等。原创 2022-10-08 21:00:59 · 277 阅读 · 0 评论 -
SpringBoot日志文件
虽然使用上述格式可以将日志记录下来了,但是面对线上的复杂情况,一个文件记录肯定是不能够满足运维要求的,通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小。以上格式是基于logback日志技术设置每日日志文件的设置格式,要求容量到达3KB以后就转存信息到第二个文件中。文件命名规则中的%d标识日期,%i是一个递增变量,用于区分日志文件。对于日志文件的使用存在各种各样的策略,例如每日记录,分类记录,报警后记录等。日志不能仅显示在控制台上,要把日志记录到文件中,方便后期维护查阅。原创 2022-10-08 20:47:27 · 111 阅读 · 0 评论 -
SpringBoot日志输出格式控制
日志已经能够记录了,但是目前记录的格式是SpringBoot给我们提供的,如果想自定义控制就需要自己设置了。先分析一下当前日志的记录格式。对于单条日志信息来说,日期,触发位置,记录信息是最核心的信息。级别用于做筛选过滤,PID与线程名用于做精准分析。了解这些信息后就可以DIY日志格式了。原创 2022-10-08 20:45:41 · 200 阅读 · 0 评论 -
SpringBoot设置日志
上述代码中log对象就是用来记录日志的对象,下面的log.debug,log.info这些操作就是写日志的API了。写代码的时候每个类都要写创建日志记录对象,这个可以优化一下,使用前面用过的lombok技术给我们提供的工具类即可。一般情况下,开发时候使用DEBUG,上线后使用INFO,运维信息记录使用WARN即可。说白了就是总体设置一下,每个包设置一下,如果感觉设置的麻烦,就先把包分个组,对组设置,没了,就这些。:设置日志组,控制指定包对应的日志输出级别,也可以直接控制指定包对应的日志输出级别。原创 2022-10-08 20:42:26 · 1326 阅读 · 0 评论