- 博客(21)
- 资源 (6)
- 收藏
- 关注
原创 @JsonFormat 和 @DateTimeFormat 的区别
DateTimeFormat 是 Spring Framework 提供的注解,主要用于在数据绑定(Data Binding)过程中指定日期时间的格式,尤其是在处理 HTTP 请求参数和表单数据时。@JsonFormat 是 Jackson 库提供的注解,主要用于序列化(对象转JSON)和反序列化(JSON转对象)过程中指定日期时间的格式。@JsonFormat 和 @DateTimeFormat 都是用来指定日期时间格式的注解,但它们分别属于不同的框架,并且应用场景有所不同。
2024-09-19 22:55:30
747
原创 关于spring-boot-starter-validation校验基本类型校验注意事项
在Spring MVC中, Spring MVC的默认行为是处理HTTP请求并调用相应的Controller方法,但它不会自动为@RequestParam、@PathVariable等参数执行JSR-303/JSR-349校验,并将校验错误转换为HTTP响应。这是因为这些参数是通过HTTP请求的行(URL路径或查询字符串)传递的,而不是作为请求体的一部分,而Spring MVC的校验机制通常与请求体中的复杂对象相关联。注意下面的代码不会触发参数校验。
2024-08-02 13:50:59
370
原创 使用Nacos统一管理Logback日志配置
在项目开发过程,之前日志配置是日志模块单独配置,其他微服务通过引入日志模块依赖来统一日志配置。但是这样结构有一个痛点就是,如果需要修改日志配置,就需要重新打包,然后构建所有依赖了日志模块的微服务,无法实时修改日志配置。为了实时更新日志配置无需重新构建服务,我们可以把logback日志配置文件放到Nacos维护,这样可以做到实时更新。
2024-07-26 15:08:01
2037
2
原创 OpenFeign配置说明
OpenFeign在Spring Cloud中整合了Ribbon或LoadBalancerClient(对于较新的Spring Cloud版本),允许你设置HTTP客户端的超时时间。确保这些配置与您的实际环境和目标服务响应时间相适应,避免因为超时设置不合理导致请求失败或服务不可用的问题。connectTimeout:指的是建立到远程服务器的TCP连接所花费的最大时间。readTimeout:在成功建立连接后,等待服务器响应数据的最长时间。
2024-03-22 14:36:02
511
1
原创 SpringBoot+Nacos+Logback变量读取出现XXX_IS_UNDEFINED问题
经日志分析,每次都是nacos配置发送了变化以后,触发了refresh事件,spring监听到事件会触发SpringApplicationBuilder的run方法,触发SpringApplication的run方法执行,触发spring部分初始化机制执行,其中PropertySourceBootstrapConfiguration类有涉及到日志系统重新初始化逻辑。这个配置读取application.yml的属性spring.application.name。
2024-02-20 10:22:27
837
1
原创 Spring Data Redis 连接池配置
Spring Data Redis 支持使用jedis或者lettuce两种驱动连接Redis服务器,这两种都支持连接redis集群,两种的特性如表所示(来自官方文档),推荐使用lettuce。默认情况下,由LettuceConnectionFactory创建的所有LettuceConnection实例为所有非阻塞和非事务性操作共享相同的线程安全本机连接。RedisTemplate 配置,非必须,不修改使用的就是默认配置,下面的配置是修改默认序列化和反序列化方式。增加连接池配置(yaml格式)
2023-07-12 16:13:09
881
1
原创 Spring Data MongoDB 配置
MongoDB默认端口是27017,如果是默认端口可以删除port配置,如果需要配置多个host,只需要在additional-hosts增加多个配置即可,格式为host:port。使用url配置副本连接已经账号密码等属性。使用host方式配置。
2023-04-21 08:42:23
1128
原创 shardingsphere按月分表实战
shardingsphere如果要实现按月分表需要我们实现分表路由算法实现,默认是没有用。下面进入实战环节,本文所说按月份分表是相同月份的数据放入同一个表,当然如果你要每个月保存到一个表也是可以的,修改一下算法就行了。按月分表使用每个月数据都比较稳定业务场景使用,每个月数据量不会有太大的差异。在数据库创建好对应的分表,分表可以在同一个数据库也可以在不同的数据库。范围查询算法,主要针对查询条件使用>,=,
2022-10-12 16:34:59
3105
原创 easyexcel 导入日期类型处理技巧
使用easyexcel 2.1.6版本及以下进行导入的时候进行导入时候,如果导入的模板里面有日期或者时间字段类型,如果我们使用LocalDate或者LocalDateTime进行对象映射是不支持。怎么处理捏?我们可以把对应模板的映射的对象的属性设置为string类型,配合使用@DateTimeFormat注解进行格式化,后续再转换为LocalDate或者LocalDateTime。...
2022-03-10 09:02:29
6290
原创 记一次mysql惨痛教训,时间变成“0000-00-00 00:00:00“
因生产环境其他组有同步我这边的一个mysql的表数据,为了重新同步,因为使用的cannal做数据同步,这个只能做增量的数据同步,是通过监听binlog来实现。当时提出的方案是把需要同步的表的数据的创建时间加1秒触发binlog日志变更,触发数据重新同步。 最开始其实是通过函数DATE_ADD(create_time,INTERVAL 1 SECOND)进行数据更新,后面发现使用直接+1也可以达到同样的效果,然后就直接使用+1进行更新。执行了脚本后,发现部分数据的时间出现'0...
2021-11-10 09:51:02
2468
原创 windows下安装Gradle
安装gradle之前首先安装好jdk配置好jdk环境变量,要求jdk版本为1.8或者以上。第一步到gradle官网下载想要安装的gradle版本,建议直接下载完整包,也就是complete(checksums),就是zip包。第二步解压安装包到指定的目录,这个因人而异,比如D:\Gradle第三步配置Gradle环境变量,新增GRADLE_HOME环境变量,指定到步骤二指定的目录,比如D:\Gradle\gradle-6.9,然后在path变量新增%GRADLE_HOME%\bin即可。.
2021-11-08 17:06:56
1577
原创 Feign启用hystrix跨服务header传参解决方案
解决header中参数丢失问题目前我所知道的方案有两种,方案一最简单,适用于单一方法需要通过header传参,只需要在方法加个参数,在控制层的方法获取header中的参数后作为参数传递即可。方案二适用全局参数比如token加密密钥等,这种情况就需要统一处理。介绍解决方案之前先对hystrix的插件功能进行一些简单介绍。Hystrix提供插件功能,我们通过实现hystrix提供的插件接口可以实现自定义行为。hystrix提供以下几种类型的插件Event Notifier、Metrics Publish
2021-03-27 13:50:58
863
原创 Spring Cloud Stream 集成Rabbit MQ生成队列配置说明
Spring Cloud Stream 当使用的消息中间件为Rabbit MQ的时候,配置input的时候,如果没有指定消息分组,那么生成的队列名称就是匿名的,并且当连接断开的时候会自动删除对应的队列。在Rabbit MQ可以看到对应队列如下,第一个队列就是没有指定消息分组属性group生成的队列,可以看到生成的队列特性auto-delete:true,exclusive:true,也就是队列是排他性的,只有当前连接可见,并且当连接断开的时候队列会自动删除。exclusive: true
2021-01-18 17:32:50
1442
原创 Ribbon默认超时时间
通过 查看spring-cloud-netflix-ribbon下的配置类RibbonClientConfiguration 这个类,可以看到DEFAULT_CONNECT_TIMEOUT=1000即默认连接超时时间是1秒,DEFAULT_READ_TIMEOUT = 1000,读取数据超时时间为1秒。@SuppressWarnings("deprecation")@Configuration@EnableConfigurationProperties//Order is important h
2020-07-12 18:20:41
7361
1
原创 使用@Profile解决不同环境下配置
Spring 3.1开始引入@Profile注解,此注解可以配合不同环境的Profile使用,可以实现灵活配置。比如某些配置只能指定环境启用,就可以使用此注解。Spring会根据不同Profile才会对使用相同环境的配置类加入Spring的容器进行管理。比如某配置类A上加了@Profile("dev")@Configuration那么此配置类A只有在当前Profile为dev才被...
2019-11-13 15:33:16
692
原创 Linux 安装jdk和环境变量配置
/etc/profile:该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行。也就是说这个文件对每个shell都有效,用于获取系统的环境信息,如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 这里是针对所有的用户的,所有的shell。/etc/bashrc:为每一个运行bash shell的用...
2018-04-07 09:51:11
267
原创 使用maven命令安装jar到maven本地资源库
配置好maven的环境变量,使用管理员身份执行cmd在cmd下执行如下命令:mvn install:install-file -Dfile=G:\tech-sdk-2.0.10.jar -DgroupId=org.gz.internal -DartifactId=tech-sdk -Dversion=2.2.2-SNAPSHOT -Dpackaging=jar命令参数说明
2017-12-12 17:01:30
2035
原创 spring切面表达式简单解析
execution 语句格式:execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?)修饰符(modifiers-pattern) 返回值(ret-type-pattern) 方法的包名(declar
2017-10-30 09:56:16
673
原创 设置Maven项目使用的jdk版本
maven项目如果没有知道编译使用的jdk版本,每次执行Maven->Update Project(Alt+F5)的时候都会修改项目的编译的jdk版本未当前maven默认的jdk版本。有两种方法可以避免每次都要人工修改jdk编译版本。第一方法修改项目的pom文件,只对当前项目有效 org.apache.maven.plugins maven-c
2017-10-07 11:00:16
777
HTML、 PHP、JavaScript、SQL、ASP、XML帮助文档
2012-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人