Spring
Spring Java 常用编码
lizz666
不积跬步无以至千里
展开
-
Spring Web中RequestMapping接口获取request和header的内容的方式
在写接口时,经常需要获取请求中的header进行业务处理,比如签名内容,客户端信息等,我们可以通过下面三种方式获取header内容。注解还包含其他参数选项,可以根据需要使用。原创 2024-08-09 18:22:25 · 366 阅读 · 0 评论 -
Spring @Value获取数组、集合、map等不同结构方法
Spring 架构中,可以使用@Value注解从配置文件或命令行参数中获取集合数据。原创 2024-07-08 16:28:07 · 681 阅读 · 0 评论 -
Spring @Cacheable缓存注解用法说明
注解Cacheable 是 Spring 框架中用于缓存数据的方法或类的注解。通过使用这个注解,你可以避免重复计算和重复获取数据,从而提高应用程序的性能。原创 2024-07-02 15:35:40 · 457 阅读 · 0 评论 -
Spring启动“--”设置参数没生效
在idea中启动SpringBoot项目时,使用“--”设置的启动参数没有生效,如修改端口号“--server.port=8082”原创 2024-03-13 17:26:38 · 549 阅读 · 0 评论 -
使用StopWatch监测代码块的执行时间
StopWatch是 Spring 提供的一个计时器类,用于测量代码块的执行时间。它可以方便地记录多个任务的执行时间,并提供详细的统计信息。创建一个 StopWatch 实例。使用start()方法开始计时。使用stop()方法停止计时。使用getTime()方法获取执行时间。使用方法输出执行时间表单。测量代码块的执行时间比较不同代码块的执行效率监控程序的性能// 计时任务 1// 计时任务 2// 打印每个任务的执行时间。原创 2024-02-27 18:08:50 · 616 阅读 · 0 评论 -
使用arthas排查请求超时问题
客户端调用服务时间出现偶尔超时现象。原创 2023-12-21 11:32:18 · 1153 阅读 · 0 评论 -
spring web接收请求日志,动态调整
【代码】spring web接收请求日志,动态调整。原创 2023-12-20 17:46:53 · 449 阅读 · 0 评论 -
深入理解Spring Kafka中@KafkaListener注解的参数与使用方式
Apache Kafka作为一个强大的消息代理系统,与Spring框架的集成使得在分布式应用中处理消息变得更加简单和灵活。Spring Kafka提供了注解,为开发者提供了一种声明式的方式来定义消息监听器。在本文中,我们将深入探讨注解的各种参数以及它们的使用方式,帮助读者更好地理解和使用Spring Kafka。原创 2023-12-05 15:27:04 · 3710 阅读 · 0 评论 -
基于transmittable-thread-local的请求参数传递,如traceid,版本等
在系统中对请求链路根据版本信息进行服务调度,保证请求发送的请求链路的不同的版本服务上。原创 2023-10-30 10:40:03 · 402 阅读 · 0 评论 -
基于@Async注解实现多个异步线程池
在现代应用程序中,异步编程变得越来越重要,特别是在需要处理高并发或耗时的任务时。Spring Framework 提供了@Async注解,允许你轻松地实现异步操作。默认情况下,Spring 使用一个共享的线程池来处理异步方法,但在某些情况下,你可能希望为不同类型的任务配置不同的线程池。这篇文章将介绍如何使用@Async注解实现多个异步线程池。原创 2023-10-18 10:42:06 · 390 阅读 · 0 评论 -
SpringCloudSleuth异步线程支持和传递
在使用Sleuth做链路跟踪时,默认情况下异步线程会断链,需要进行代码调整支持。原创 2023-10-17 17:59:35 · 626 阅读 · 1 评论 -
使用Spring Cloud Sleuth进行全链路数据透传传递,获取traceid和header传递的数据
在做流量分发时,希望通过header中的请求流量标记进行流量分发和特殊处理,可以使用Spring Cloud Sleuth进行header数据的传递和使用。原创 2023-09-19 17:13:22 · 758 阅读 · 0 评论 -
JAR will be empty - no content was marked for inclusion!
在对自建pom依赖组件打包时,出现JAR will be empty - no content was marked for inclusion!错误。原创 2023-09-08 11:19:40 · 789 阅读 · 0 评论 -
线上服务动态修改loggers日志级别
线上服务一般为info级别,当需要查看线上服务的debug日志时,需要调整日志级别,一般需要修改配置重启,不符合可用性原则。原创 2023-09-07 18:31:03 · 255 阅读 · 0 评论 -
分布式事物实现方案及优缺点
实现分布式事务是一个复杂的任务,涉及到许多技术和概念。这是一种经典的分布式事务处理方法。它涉及到一个协调者(Coordinator)和多个参与者(Participants)。2PC 的问题在于它的严重阻塞性,以及在协调者或参与者发生故障时可能会导致一些问题。原创 2023-08-27 16:12:44 · 582 阅读 · 0 评论 -
actuator/prometheus使用pushgateway上传jvm监控数据
在pushgateway面板中会显示新增的服务,在prometheus中也可能看到采集的数据。原创 2023-08-15 17:46:25 · 1365 阅读 · 0 评论 -
rocketmq客户端本地日志文件过大调整配置(导致pod缓存cache过高)
在使用rocketmq时,发现本地项目中文件越来越大,查找发现在/home/root/logs/rocketmqlog目录下存在大量rocketmq_client.log日志文件。原创 2023-07-26 11:27:23 · 1907 阅读 · 0 评论 -
rocketmq消息注解基于springboot的简单应用及默认详细配置
rocketmq消息组件在springboot框架中的应用,使用rocketmq的整合包进行编码实现。原创 2023-06-06 18:03:05 · 3237 阅读 · 0 评论 -
使用jasypt加密数据密码ENC异常:Required Encryption configuration property missing: jasypt.encryptor.password
需要对项目中密码进行加密处理,防止密码明文泄露,使用jasypt方式对密码进行加密。原创 2023-04-04 11:04:57 · 3959 阅读 · 0 评论 -
启动WARN:This primary key of “id“ is primitive !不建议如此请使用包装类 in Class原因分析
项目启动时出现异常。keyType.isPrimitive(),当对象主键类型是原始类型时,报出错误提示。mybatis-plush框架对数据类型进行判断。将对象中的主键改为非原始类型即可。原创 2023-02-13 15:40:20 · 8213 阅读 · 2 评论 -
SpringBootTest单元测试异常:Unable to find a @SpringBootConfiguration
使用@SpringBootTest(classes = CipherTaskApplication.class)指定启动类。提示为没有找到确定必须的注解,即没有找到springboot的启动类。原创 2022-12-08 16:42:21 · 1643 阅读 · 0 评论 -
SpringCloud:EnableFeignClients注解用法
了解Feign客户端使用@EnableFeignClients加载各种微服务接口的方式,解决无法启动加载微服务FeignClient接口的问题。原创 2022-11-08 15:31:19 · 3703 阅读 · 0 评论 -
Spring接收List对象:No primary or default constructor found for interface java.util.List] with root cause
场景一般情况下可以直接使用基础类型接收传参,但是在使用List等其他对象接收参数时,就会出现无法初始化的异常。public String check(List<String> datas,String data1,Integer data2)ERROR 26459 --- [nio-7088-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispa...原创 2022-03-25 16:39:44 · 869 阅读 · 0 评论 -
Spring Cache caffeine获取所有缓存数据getNativeCache
场景在使用Spring Cache进行数存储时,一般使用key获取value,但有时需要获取所有cache进行操作,这里使用到了Cache.getNativeCache,但是无法直接使用。使用方法 public void getCacheTest(){ Cache cache = caffeineCacheManager.getCache("lizz-test-cache"); // cache转map Map<St......原创 2022-03-14 11:06:04 · 4799 阅读 · 0 评论 -
Feign加载异常:Requested bean is currently in creation: Is there an unresolvable circular reference
现象 在使用EnableFeignClients指定加载包时,启动出现下面的异常。ERROR 56739 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org...原创 2022-01-13 19:38:26 · 5352 阅读 · 0 评论 -
Feign client config使用feignName配置无效原因分析
场景在使用feign.client.config设置feign请求参数时,通过feign.client.config.feignName指定某个fegin服务配置没有生效,但feign.client.config.defalut可以生效。分析原因测试场景为在feign调用的请求中添加一个header参数。配置如下,在调用LIZZ-SERVER服务时,在请求header中增加一个fw-token参数。feign: client: config: L...原创 2022-01-12 17:42:35 · 3514 阅读 · 0 评论 -
Feign Client配置说明,使用feign.client.config.feignName.defaultRequestHeaders设置header
场景在调用feign时,需要在header中增加一个token用于调用权限校验,参考官网说明例子feign: client: config: defalut: # feign请求默认配置 connectTimeout: 2000 readTimeout: 3000 fiegnName: # fiegnName服务请求的配置,优先defalut配置。 connectTimeout: 5000 # 链接...原创 2022-01-12 17:13:59 · 3184 阅读 · 0 评论 -
ReflectionException: Could not set property ‘id‘ of x argument type mismatch
现象 在使用mybatisplus进行save数据保存时,出现异常。2022-01-08 16:58:05.849 ERROR 22846 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing...原创 2022-01-08 17:12:46 · 1177 阅读 · 0 评论 -
Spring中WebMvcConfigurer添加的自定义HandlerInterceptor拦截器没生效问题
场景在使用WebMvcConfigurer添加自定义HandlerInterceptor时,发现有时生效有时候不生效。将老工程中copy到了WebMvcConfigurer和HandlerInterceptor文件到新的工程中,老工程中是生效的,但是工程没有生效,拦截器参数都一样,访问地址都是http://{serverName}/lizzapp/api/get,关键代码如下:代码参考Spring Boot mvc web拦截器实现权限访问控制等功能_进击的小白-CSDN博客 ...原创 2021-12-30 18:04:32 · 4506 阅读 · 0 评论 -
Spring mvc参数属性编辑器InitBinder、WebDataBinder和PropertyEditorSupport解决参数类型和值处理(如枚举enum)
场景 对代码进行升级改造,需要将老版本中的String类型改为enum类型,并保持接口数据兼容。老版本中String类型为小写字符串,新版本enum类型为大写,所有直接替换是无法匹配。String版本 public static final String DATA_TYPE_PHONE = "phone"; public static final String DATA_TYPE_IDCARD = "idcard"; public String deco...原创 2021-12-20 10:02:17 · 859 阅读 · 0 评论 -
设计模式之策略模式:基于Spring环境用法
介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。 如何解决:将这些算法封装成一个一个的类,任意地替换。 关键代码:实现同一个接口。 应用实例:1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。 3、JAVA AWT 中的 LayoutManager.原创 2021-12-17 18:23:00 · 320 阅读 · 0 评论 -
SpringMvc返回http状态码及响应内容HttpServletResponse
场景在项目中有时需要对接口返回时响应不同的http状态码,如权限校验返回401,禁止访问403等。实现代码 public String test(HttpServletRequest request, HttpServletResponse response,Long uid) throws Exception { // 返回403错误 response.setStatus(HttpStatus.FORBIDDEN.value()); .原创 2021-12-06 16:56:27 · 3863 阅读 · 0 评论 -
Spring使用WebMvcConfigurer配置添加HandlerInterceptor拦截器实现权限访问控制等功能
场景使用spring boot项目实现web接口时,希望部分访问接口进行安全校验,如用户权限校验等。方案一:比较low的方式就是在没个接口中增加一个权限校验的代码块,代码比较臃肿。 方案二:可以统一使用spring拦截器实现,合理使用设计模式,代码优雅,管理方便。代码实现自定义拦截器类,如需要对请求前后的统一处理@Component@Slf4jpublic class CipherAuthInterceptor implements HandlerInterceptor {原创 2021-11-25 18:41:52 · 1541 阅读 · 0 评论 -
The bean FeignClientSpecification could not be registered. A bean with that name has already been
现象客户端使用feign调用服务api时,启动出现异常如下:ERROR 41681 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : ***************************APPLICATION FAILED TO START***************************Description:The bean 'LIZZ-PROVIDER.FeignClientSpecific原创 2021-11-23 11:10:38 · 8656 阅读 · 0 评论 -
Cannot construct instance of no Creators, like default constructor, exist cannot deserialize from
现象feign.codec.DecodeException: Type definition error: [simple type, class com.lizz.test.api.LizzRs]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of原创 2021-11-23 10:13:36 · 2293 阅读 · 0 评论 -
mybatis-plus批量处理方法
场景在使用mybatis-plus作为数据客户端时,批量处理也需要用起对应的方法。参考官网:CRUD 接口 | MyBatis-Plus编码接口实现/** * @description: ErmUser 表映射,与数据库表进行对应。 * @TableName 映射数据库表名,不写将进行转换。ErmUser转为erm_user * @TableField 映射数据库表中字段名,不写将进行转换 */@Data@TableName("users")public class Er原创 2021-10-26 16:29:43 · 3693 阅读 · 0 评论 -
spring boot和mybatis-plus动态数据源
maven依赖Spring Boot默认连接池为HikariCP,一般也是完全够用的,切速度比druid快,但是druid扩张性较强,且国内比较喜欢使用,这里使用druid做用例。版本根据可以使用最新版本 <!--spring mybatis-plus动态数据源--> <dependency> <groupId>com.baomidou</groupId> <ar原创 2021-10-25 18:52:29 · 451 阅读 · 0 评论 -
Spring JdbcTemplate异常:EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
现象在Spring框架中使用JdbcTemplate.query返回空对象org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0 at org.springframework.dao.support.DataAccessUtils.nullableSingleResult(DataAccessUtils.java:97) at org.springfr.原创 2021-10-23 18:22:00 · 1091 阅读 · 0 评论 -
mybatis-plus异常:dynamic-datasource can not find primary datasource
现象使用mybatis-plus多数据源配置时出现异常com.baomidou.dynamic.datasource.exception.CannotFindDataSourceException: dynamic-datasource can not find primary datasource分析异常原因是没有设置默认数据源,在类上没有使用@DS指定数据源时,默认会加载master数据源,但是在配置中没有使用master配置,类似下面的用法,@Componentpublic原创 2021-10-22 18:49:02 · 52387 阅读 · 10 评论 -
dependency-check安全漏洞扫描:rxnetty,spring_framework等版本问题
现象最近在使用dependency-check做项目安全漏洞检查时,发现有一个严重漏洞无法修复。rxnetty-0.4.20.jarrxnetty-servo-0.4.9.jar原创 2021-10-21 16:19:16 · 3898 阅读 · 0 评论