logback日志输出到xxl-job中
logback日志输出到xxl-job中
一、介绍
是这样的,最近我在调研xxl-job的使用,想把它整合到自己的项目工程中。
整合得很顺利,没什么问题,但在使用上出现了一个小小的繁琐,就是日志的输出
1234567891011121314@Slf4j@Componentpublic class SampleTask { @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { XxlJobHelper.log("XXL-JOB, Hello World."); for (int i = 0; i < 5; i++) { XxlJobHelper.log("beat at:{}", i); log.info("beat at:{}", i); ...
openfeign方法级别自定义超时时间
openfeign方法级别自定义超时时间
一、介绍
最近,因为工作原因,一直在看openfeign相关的内容,其中就包括调研了如何支持到方法级别自定义超时时间。
全局设置的很简单
123456feign: client: config: default: connect-timeout: 5000 read-timeout: 5000
而如果不设置,将会走默认的设置
二、代码
单条方法的话,代码其实很简单,我以前就会
1234567891011121314151617package com.banmoon.feign;import com.banmoon.constant.ServerNameConstant;import com.banmoon.entity.UserEntity;import com.banmoon.feign.fallback.FeignTestClientFallbackFactory;import feign.Request;import org.springframework.cloud.openfeign.F ...
补充openfeign的get请求组合参数调用的情况
补充openfeign的get请求组合参数调用的情况
一、说明
在以前,我记录了一篇openfeign调用的方式
openfeign的几种调用方式 | 半月无霜 (banmoon.top)
这些天回过头去看看,好像是少了一种get请求方式,就是参数组合调用的这种情况
12345@ApiOperation("参数组合get调用")@GetMapping("/paramsGroupGetDTO")public ResultData<UserEntity> paramsGroupGet(ParamsGroupGetDTO dto) { return feignTestClient.paramsGroupGet(dto);}
如果直接使用@RequestParam注解会怎么样,可以看看报的异常
可以看到,如果我们是使用@RequestParam注解,它会直接调用toString()方法给的参数。
可是,我们需要的是这种形式a=xxx&b=xxx。
其实,openfeign考虑到了,我们可以换一个注解@Spr ...
SpringBoot整合MongoDB
SpringBoot整合MongoDB
一、介绍
MongoDB是一个开源的文档数据库,采用分布式文件存储的方法,是NoSQL数据库中的一种。它的设计目标是为了在现代应用开发中解决传统关系型数据库所遇到的一些挑战,比如灵活性、可扩展性和性能等方面的问题。
以下是MongoDB的一些主要特点:
文档导向存储:MongoDB采用文档导向的存储模式,数据以JSON格式存储,这种模式很适合应用程序的数据结构,可以更自然地映射到代码结构。
灵活的模式设计:MongoDB不需要事先定义表结构,文档可以包含不同的字段,可以根据需要动态地添加或删除字段,因此更适合快速迭代和灵活的数据模型设计。
高性能:MongoDB具有高性能的读写操作,支持在数据量较大的情况下进行高效的查询和写入操作,同时也支持基于索引的查询优化。
可扩展性:MongoDB具有良好的横向扩展能力,可以通过添加更多的节点来扩展数据存储和处理能力,从而应对不断增长的数据量和访问压力。
复制和容错:MongoDB支持数据的复制和容错机制,可以配置主从复制和分片集群,确保数据的可用性和可靠性。
丰富的功能和工具:Mo ...
MyBatisPlus的SQL注入器批量插入更新方法
MyBatisPlus的SQL注入器批量插入更新方法
一、介绍
在前几天,我们使用了MyBatis plus的SQL注入器成功注入了我们想要的SQL写法。
MyBatisPlus的SQL注入器 | 半月无霜 (banmoon.top)
现在我又新增了一个方法,来看看
二、代码
其他代码就不贴了,去上一篇文章那看,这边只贴具体的方法实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172package com.banmoon.business.mybatis.method;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;import com.baomidou.mybatisplus.core.meta ...
IDEA如何在DEBUG中输出耗时
IDEA如何在DEBUG中输出耗时
一、介绍
在今天进行debug的时候,我突然想知道一段业务代码执行需要多少时间。
这也很简单,打上日志输出耗时就行了。
可是,当时的项目已经debug启动,想要输出还得改代码,还得重新启动
这就很麻烦了,有没有什么其他方法呢?
还真的有,这个IDEA中debug带的功能,我们使用下就可以进行输出耗时了,如下
二、代码
假设我们有这么一段代码,中间的睡眠,我们模拟业务的方法调用
我们只需要在前面打上断点
需要在这里输入什么代码呢?
本文考虑的是耗时,所以我找了一个工具类,如下
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061package com.banmoon.utils;import cn.hutool.core.date.DateUtil;import cn.hutool.core.date.TimeInterval;import cn.hutool.core.ut ...
MyBatisPlus的SQL注入器
MyBatisPlus的SQL注入器
一、介绍
在前些天的时候,我需要写一个存在则更新的sql语句,这以前我有记录过。
MySQL插入重复后进行覆盖更新 | 半月无霜 (banmoon.top)
但以前我是在mapping.xml文件中,自己手动拼出来的。
虽然可以实现,但真的好麻烦,每个实体都要这样写吗?
我不,我去看了MyBatis plus的BaseMapper是如何实现的。
嘿,还真的让我找到了,不多说,上代码。
二、代码
在MP中,有一个接口ISqlInjector.java,它的一个实现类DefaultSqlInjector.java,截图看看
可以看到,它自己弄了点方法注入进去了,所以我们只要依葫芦画瓢,也就能写出自己的方法;
1)编写方法
我们编写一个类似于Insert.java的这样一个类,我们取名为InsertOnDuplicateKeyUpdateMethod.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 ...
关于Java中try...catch...finally的面试题
关于Java中try…catch…finally的面试题
一、问题
try...catch...finally
try中间有return返回值,那么finally还执行吗?
如果try中间有return返回,finally中间也有,会发生什么?
如果try中间有return返回一个变量,在finally中修改这个变量,会发生什么?
二、解答
1)try中间有返回值,那么finally还执行吗
finally中的代码块都会执行,不管try中有没有return,也不管有没有出现异常。
这个大家都知道,通常这个finally关键字,都是用来释放资源的,比如关闭流。
2)如果try中间有return返回,finally中间也有,会发生什么
这个问题有点困扰,平常我们不会这样写代码,正如上面说的,我们通常是用来释放资源的。
但如果在finally出现了return代码,应该知道将会出现什么样的结果。
注意看下面这段代码
123456789101112131415161718192021222324252627282930packa ...
Spring中事件的发布订阅
Spring中事件的发布订阅
一、介绍
在Spring框架中,ApplicationEventPublisher是一个接口,用于发布应用程序事件。它允许应用程序的不同组件之间进行解耦,实现事件驱动的开发模式。
通过ApplicationEventPublisher,我们可以将自定义的事件发布到应用程序的上下文中,然后其他组件可以注册为ApplicationListener来监听这些事件。ApplicationListener是另一个接口,用于接收和处理应用程序事件。
当事件被发布时,ApplicationEventPublisher会通知所有注册的ApplicationListener,并将事件对象传递给它们。这样,监听器就可以根据事件的类型进行相应的处理逻辑,完成业务逻辑的触发和处理。
使用ApplicationEventPublisher和ApplicationListener可以实现松耦合的事件驱动编程,提高代码的可维护性和扩展性。它们是Spring框架中事件机制的核心组件之一。
不啰嗦,直接看如何编写代码
二、代码
声明一个事件,TestEvent.java,需要继承Appli ...
如何在控制台实现一个进度条
如何在控制台实现一个进度条
一、前言
在今天使用Java代码做一个集合的任务的时候,没在for循环中手动打印日志信息,导致在任务执行后根本不知道执行到了哪一步。
这点让我挺困扰的,于是在github上寻找有没有什么进度条的显示方式,我还真找到了。
看了一下代码,挺简单的,就将思路直接copy过来,实现了一个自己的控制台进度条。
vdurmont/etaprinter: Java console progress bar (github.com)
二、代码
抽象类ProcessBarUtil.java,里面有着基本的信息
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485package com.banmoon.utils.processbar;import java.util.Iterator;import java.u ...