202109-10 SpringBoot Admin健康检查功能的实现 目录admin实现admin功能创建客户端主动上报的服务端实现效果异常通知邮件通知其他通知代码地址admin监控检查,检查的是什么了。检查的是应用实例状态,说白了就是被查服务提供信息给检查服务端。在springcloud中可以有两种方式进行健康检查,一种是应用主动上报到admin服务端,第二种就是的admin项目eureka服务端拉取信息。admin主要就是告诉运维人员,服务出现异常,然后进行通知(微信、邮件、短信、钉钉等)可以非常快速通知... 继续阅读 >
202109-10 五分钟解锁springboot admin监控新技巧 最近这一个月由于项目进度紧张,将近一个月没有动静。分享一下最近体会的springboot监控的一些心得体会,供一些规模不是很大的团队做一些监控。适用场景:1、项目规模不大2、用户量不是很大、并发要求不强3、无专门运维力量4、精致的团队规模对于一些常规的项目,或者企业职责分工不是非常明确的单位来说。往往一个系统从需求到设计,开发,测试到最终上线,运维。往往80%的任务由开发团队来完成。由此,开发人员除了要实现系统的... 继续阅读 >
202109-10 SpringBoot配置系统全局异常映射处理 目录一、异常分类 1、业务异常2、系统异常二、解决应用启动后404界面1、引入页面Jar包2、自定义首页接口3、首页界面4、运行效果三、SpringBoot2.0中异常处理 1、项目结构图2、自定义业务异常类3、自定义异常描述对象4、统一异常处理格式5、简单的测试接口四、源代码地址 一、异常分类 这里的异常分类从系统处理异常的角度看,主要分类两类:业务异常和系统异常。1、业务异常业务异常主要是一些可预见性异常,... 继续阅读 >
202109-10 SpringBoot2整合Ehcache组件实现轻量级缓存管理 目录一、Ehcache缓存简介Hibernate缓存EhCache缓存特点对比Redis缓存二、集成SpringBoot框架1、核心依赖2、加载配置3、配置详解三、注解用法四、源代码地址一、Ehcache缓存简介Hibernate缓存Hibernate三级缓存机制简介:一级缓存:基于Session级别分配一块缓存空间,缓存访问的对象信息。Session关闭后会自动清除缓存。二级缓存:是SessionFactory对象缓存,可以被创建出的多个Session对象共享,二级缓存默认是关闭的,如果要使... 继续阅读 >
202109-09 SpringBoot配置Actuator组件,实现系统监控 目录一、Actuator简介二、与SpringBoot2.0整合 1、核心依赖Jar包2、Yml配置文件三、监控接口详解 1、Info接口2、Health接口3、Beans接口4、Conditions接口5、HeapDump接口6、Mappings接口7、ThreadDump接口8、ShutDown接口四、源代码地址 一、Actuator简介监控分类Actuator提供Rest接口,展示监控信息。接口分为三大类:应用配置类:获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Sprin... 继续阅读 >
202109-09 springboot利用redis、Redisson处理并发问题的操作 一、引入问题在工作中,遇到的接口基本都是长这样的:如下为一个库存扣减的接口。从redis中获取库存数量,然后扣减一个数量问题这个接口在并发的情况下是有问题,可以用jmeter测试一下(用postman压力测试了一下,没有测出并发问题。网上有的博客说postman没法测试并发)jmeter设置:100个并发打印结果:问题很严重呀解决方案,优化如下:jmeter设置:101个并发,stock=100,则正确结果是应该会出现一次“扣减失败,库存不足”打印... 继续阅读 >
202109-09 springboot+thymeleaf找不到视图的解决方案 springboot+thymeleaf找不到视图情况:springboot+thymeleaf打成jar包后,报错,但在eclipse本地跑却可以:templatemightnotexistormightnotbeaccessiblebyanyoftheconfiguredTemplateResolversyml配置:spring:thymeleaf:cache:false#开发时关闭缓存,不然没法看到实时页面mode:HTML5#用非严格的HTML#enabled:trueencoding:UTF-8prefix:classpath:/templates/suffix:.html... 继续阅读 >
202109-09 浅谈springboot之JoinPoint的getSignature方法 JoinPoint的getSignature方法在使用springboot写aop的时候,有个JoinPoint类,用来获取代理类和被代理类的信息。这个文章记录一下JoinPoint的getSignature方法返回的是什么格式。不废话,贴代码packageorg.aspectj.lang;publicinterfaceSignature{StringtoString();StringtoShortString();StringtoLongString();StringgetName();intgetModifiers();ClassgetDeclaringType();Stringg... 继续阅读 >
202109-07 SpringBoot集成EasyExcel的步骤 目录一、EasyExcel简介二、常用注解三、依赖四、监听五、接口导入Excel六、接口导出Excel(HttpServletResponseresponse,HttpServletRequestrequest)七、本地导入、本地导出一、EasyExcel简介EasyExcel优势 注解式自定义操作。 输入输出简单,提供输入输出过程的接口 支持一定程度的单元格合并等灵活化操作二、常用注解@ExcelProperty指定当前字段对应excel... 继续阅读 >
202109-07 SpringBoot可视化接口开发工具magic-api的简单使用教程 目录magic-api简介使用在SpringBoot中使用增删改查参数验证结果转换使用事务集成Swagger总结参考资料magic-api简介magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象。使用下面我们来波实战,熟悉下使用magic-api来开发API接口。在SpringBoot中使用magic-api原生支持SpringBoot,可与SpringBoot无缝整合。... 继续阅读 >
202109-07 Springboot中Aspect切面的实现方式(以记录日志为例) SpringbootAspect切面的实现今天我们来说说spring中的切面Aspect,这是Spring的一大优势。面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提取出去,便于后期的维护和迭代。好了,废话少说!我们直接步入正题以系统日志为例首先,我们先做一些准备工作。1、新建一个Springboot工程2、添加必要的依赖AOP必须<dependency><groupId>org.springframework... 继续阅读 >
202109-06 SpringBoot框架如何操作Excel和PDF 目录一、文档类型简介1、Excel文档2、PDF文档二、Excel文件管理1、POI依赖2、文件读取3、文件创建4、文件导出5、文件导出接口三、PDF文件管理1、IText依赖2、API二次封装3、生成PDF文件4、页面效果四、网页转PDF1、页面Jar包依赖2、编写页面样式3、核心配置类4、转换效果图五、源代码地址一、文档类型简介1、Excel文档Excel一款电子表格软件。直观的界面、出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Excel文件... 继续阅读 >
202109-06 SpringBoot框架如何管理Xml和CSV 目录一、文档类型简介1、XML文档2、CSV文档二、XML文件管理1、Dom4j依赖2、基于API封装方法3、执行效果图三、CSV文件管理1、CSV文件样式2、文件读取3、文件创建4、编写测试接口四、源代码地址一、文档类型简介1、XML文档XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格式等。它可以用来标记数据、定义数... 继续阅读 >
202109-06 解决SpringBoot ClassPathResource的大坑(FileNotFoundException) FileNotFoundExceptionSpringBoot项目将项目打包成jar包,使用ClassPathResource时使用的是绝对路径,直接调用getFile()方法会报FileNotFoundException直接上代码:通过赋值文件为临时文件的方式解决valresource=ClassPathResource("my.keystore")valtemp=Files.createTempFile("my.keystore","tmp")Files.copy(resource.inputStream,temp,StandardCopyOption.REPLACE_EXISTING)this.getClass().getClassLoader().getRes... 继续阅读 >
202109-06 SpringBoot 如何读取classpath下的文件 SpringBoot读取classpath下文件开发过程中,必不可少的需要读取文件,对于打包方式的不同,还会存在一些坑,比如以jar包方式部署时,文件都存在于jar包中,某些读取方式在开发工程中都可行,但是打包后,由于文件被保存在jar中,会导致读取失败。这时就需要通过类加载器读取文件,类加载器可以读取jar包中的class类当然也可以读取jar包中的文件。//方法1:获取文件或流this.getClass().getResource("/")+fileName;this.getClass(... 继续阅读 >
202109-04 SpringBoot2 参数管理实践之入参出参与校验的方式 目录一、参数管理二、接收参数三、响应参数四、参数校验1、借鉴参考2、常用校验方式五、源代码地址一、参数管理在编程系统中,为了能写出良好的代码,会根据是各种设计模式、原则、约束等去规范代码,从而提高代码的可读性、复用性、可修改,实际上个人觉得,如果写出的代码很好,即别人修改也无法破坏原作者的思路和封装,这应该是非常高水准。但是在日常开发中,碍于很多客观因素,很少有时间去不断思考和优化代码,所以只能从实... 继续阅读 >