2021

上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用。今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2。虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班),但不可否认的是Log4j2依然是目前性能最好的日志框架。所以,当Logback性能上无法支撑的时候,替换使用Log4j2还是最为快速便捷的方法。下面,我们就来学习一下如何在Spring Boot 2.x版本中,替换Logback,使用Log4j2记录日志。 动手试一试这里省略Spring Boot项目的基础创建,如果您还不会可以看本教程的快速入门。 下面的操作你可以基于Spring Boot 2.x中默认日志框架Logback一文的例子继续下去,也可以用任何一个Spring Boot 2.x的项目来尝试。 第一步:在pom.xml中引入Log4j2的Starter依赖spring-bo...

最新消息!根据Log4j官网发布,2.17.0版本还存在漏洞! 上图来自Log4j2官网:https://logging.apache.org/log4j/2.x/ 漏洞编号:CVE-2021-44832 漏洞内容:Log4j2提供的JDBCAppender功能,将日志信息写入数据库中,这个过程需要JNDI的支持,故攻击者可以利用此来执行任意代码。 危害等级:中 影响范围:2.17.0及以下版本(不包含2.12.4、2.3.2) 修复措施:升级Log4j2的版本 Java 8或之后用户升级到最新的2.17.1 Java 7用户升级到2.12.4 Java 6用户升级到2.3.2 这个漏洞跟之前曝出的Logback漏洞类似,因为存在苛刻的利用条件,所以危害并不是很大。也许后面你马上会看到很多来自营销号危言耸天的标题,希望你可以冷静看待,不必慌张… 点赞,转发,让更多人知道本质,不...

Spring Boot在所有内部日志中使用Commons Logging,但是对底层日志的实现是开放的。在Spring Boot生态中,为Java Util Logging 、Log4J2 和Logback 这些常见的日志框架都提供了自动化配置组件,每种Logger都可以通过配置在控制台或者文件中输出日志内容。默认情况下,当我们使用各种Starter的时候,会使用Logback来实现日志管理。 如何记日志在介绍写日志的方式有很多,这里就不对各种方式做罗列了,只讲DD用得最多的方式! 首先,在代码层面,我们不纠结到底用默认的Logback还是Log4j,而是直接用:Slf4j。 为什么不用管具体用Logback还是Log4j就可以去写代码呢?这个就是使用Slf4j好处,为什么是Slf4j?英文全称:Simple Logging Facade for Java,即:简单日志门面,它并不是...

相信不少小伙伴跟TJ君有一样的经历,当然相信也会有小伙伴是因为更换设备导致的文件丢失,不管怎么说,临时用用还行,平时大家还是不要把重要的文件直接存储在微信上,还是该备份的备份,该传输到本地的传输。存到网盘?你确定不开通个VIP那上传下载速度能用? 那么今天的问题就来了,平时大家都用什么文件传输工具呢? 今天TJ君要和大家分享的就是一款免费、开源的文件同步工具,Syncthing 作为一款P2P性质的文件同步工具,Syncthing在Github上广受欢迎,已经收获了42k的Star! Syncthing有五大特点: 1、避免数据丢失 2、安全防范攻击者 3、便捷使用 4、自动化运行 5、高兼容性 像Windwos、macOS、Android、Linux这些主流平台都支持Syncthing,所以Syncthing可以跨平台的进行文件传输。 目前最新的版本是v1.18.5版本,在1...

今天上海降温到零下了,一点起床的欲望都没,想着直接睡到吃午饭吧。结果看到群里小伙伴吐槽一早被叫起来修Bug,定睛一看,要修的BUG居然又是之前说过很多次的YYYY-MM-dd问题,这个不是之前已经说过很多次了吗(听说又有兄弟因为用YYYY-MM-dd被锤了…),怎么还有人中招呢 不过再想想,其实也正常,每一年都有新人,即使是老人,也可能因为跳槽接手已经存在问题的系统,当然也可能没关注DD,没看过之前的推送?不管什么原因,也许现在还有其他小伙伴正在修Bug的路上,所以,赶紧起床推一篇,聊聊这个问题吧。 如果你正好碰到的,可以看看了解下原因,做好相应的处理;如果还没碰到的,最好也自查一下。如果你已经很了解这个,那么把这篇文章分享到朋友圈,也提醒下身边其他的同行朋友们吧~ 事故现场我们先来写个单元测试,重现一下这个问题。 测试逻辑: 1、创建两个日期格式化: 一个是存在问题的YYYY-...

今天遇到一个小伙伴,他给TJ君提了一个小小的建议,如何让代码变得好看 这里指的好看,不是说代码的编写风格,而是指平时TJ君给大家分享项目的时候如何让展示的代码显得好看,是真的字面意思上的好看哦! 小伙伴的意思是,无论在CSDN、博客园、掘金(TJ君在这些地方都有账号,可以一起关注哦),这些分享开源项目的地方,展示的代码都是这个样子的: 虽然实用但是不够美观,他心目中觉得好看的、眼前一亮、让人舒服的代码是这样的: 好吧,之前TJ君是更多的考虑实际运用层级而忽略了美观这一点,所以这就是今天TJ君要和大家分享的项目,carbon 对于经常和大家分享代码的小伙伴来说,carbon可以成为你的好帮手。 carbon是一款将代码转变为优美图案的开源项目,没错上面你看到的特别好看的代码是一副图片哦,想直接拷贝里面内容的话,还是要找源码哦。 抛开这一拷贝使用上的不便,carbon转换出来的美化...

今天一早,还没起床,拿起手机赫然看到一个头条信息,标题着实让我心理咯噔了一下! 马上起床,直奔官网(https://logback.qos.ch/news.html),看看到底什么问题?塌的有多厉害? 既然是1.2.9版本以下问题,那就直接找到1.2.9版本修复了些啥,一看是12月16日发布的,已经有几天了,初步判断,应该问题不大吧? 仔细看看这个版本主要修复的漏洞编号:CVE-2021-42550 继续查了一下关于这个漏洞的信息如下: 该漏洞影响1.2.9以下的版本,攻击者可以通过编辑logback配置文件制作一个恶意的配置,允许执行从LDAP服务器加载的任意代码! 看描述似乎挺严重?其实并没有想象的那么严重。从上图中的,其实也可以发现,该漏洞的严重程度只是MEDIUM级别。 为避免恐慌(毕竟这两周被log4j2折腾的不轻),官方新闻中也醒目提示:该漏洞与log4Shell是完...

又到了年底,时间过得飞快,每到年底就有各种各样的总结各种各样的奖项出来。前几天谷歌就公布了2021年年度最受欢迎Chrome插件名单,名单共有13个。 让很多网友费解的是,其中有很多并不是今年刚出现的新插件,大家心里的疑问是年底评选不是应该只评当年的新货色吗? 对于这个话题,每个人都有自己的理解,TJ君也不准备多讨论,不过既然能进入榜单的肯定都是不错的插件,其中也不乏开源的作品,所以今天TJ君就准备给大家分享榜单中的几款开源插件!(想看下以前推荐的插件吗?点这里) Dark Reader这款开源插件可能不少小伙伴已经在用了,毕竟已经是个上线多年的老面孔了,不过可能因为Chrome自己一直没有推出类似的黑夜模式,所以也算是一直在金字塔尖的存在。 Dark Reader,是一款主打黑暗风格的插件,可以实现一键切换,并进行各种亮度、对比度等指数的调整。 很多小伙伴都觉得黑色,黑暗模式,可...

Spring Native 0.11.1 已发布,此版本主要是修复 0.11.0 中发现的问题,以及改进兼容性和优化功能。 从 WebMvcHints 中删除方法反射配置 优化@EnableJpaRepositories支持 无法处理 bean 定义时提供更多上下文 修复 Netty native 构建失败的问题 …… 详情查看 release note。 Spring Native 0.11.0 是两周前发布的一个主要版本,主要新特性: 使用 GraalVM 21.3, Spring Boot 2.6 和 Spring Cloud 2021.0 作为底层应用 由于 GraalVM 不再支持 Java 8,因此 Spring Native 也不再支持它。但可使用 Java 11 版本的 GraalVM 编译大多数 Java 8 应用程序 为函数类型提供 BeanFactoryN...

12月22日,Spring官方发布了Spring Boot 2.6.2版本,此版本包括55个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.2</version> <relativePath/> <!-- lookup parent from repository --></parent> 缺陷修复 当getter或setter被子类覆盖属性配置类型,在属性绑定期间使用的getter和setter的时候会有所不同 #29143 Databa...

12月22日,Spring官方发布了Spring Boot 2.5.8版本,此版本包括46个错误修复、文档改进和依赖项升级。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.8</version> <relativePath/> <!-- lookup parent from repository --></parent> 缺陷修复 DatabaseInitializationDependencyConfigurer触发工厂Bean的饥饿初始化 #28977 当应用程序依赖...

TJ君这两天碰到个怪事,好多平时不怎么联系的老朋友,都让TJ君上下QQ,然后组了个群,TJ君很是好奇这到底在干啥? 本着凡事要追根到底讲道理的精神,TJ君抓到一个这么做的朋友,严刑逼供(好说歹说)之下,终于告诉了TJ君实情: 原来QQ才是真正的网盘!!! QQ,平时大家是不是都是用来聊天的?像TJ君这样的老人,有很多个以前读书时候的班级群,而大家可能不知道的是,每个QQ群的群文件都有10G的永久存储空间! 如果这还不算什么的话?想一想你的QQ群上传文件的速度,基本都是每秒MB为单位的,是不是一下子有了网盘VIP的感觉? 不过也有小伙伴说,才10G,怎么够用?TJ君不得不敲打下这么问的小伙伴,你家的QQ只能建一个群?TJ君不是说了吗,每个QQ群的群文件都有10G的永久存储空间!划重点、划重点,是每个! 说明什么?你建几个群,就是几*10G的免费空间! 所以说。。。TJ君当了好久的工...

Spring Framework 6.0 第一个里程碑版本已经发布,目前已经可以从Spring Repo获取。这里有一些新变更我们可以提前了解一下。请大家踊跃留言、点赞、转发、再看。 Java EE迁移甲骨文已经把Java EE捐献给Eclipse基金会数年了。Java EE的名称也变更为了Jarkarta EE,包名也相应地从javax变更为jakarta。例如javax.persistence现在对应为jakarta.persistence。 核心容器在本次里程碑版本中涉及到的两个核心容器规范JSR-250和JSR-330的包名都会迁移到Jakarta EE。 持久层Jakarta EE的持久层规范也将在此次里程碑版本中完成迁移。这意味着javax.persistence和jakarta.validation都将实装。对应 Hibernate ORM 5.6.x 和 Hibe...

Spring Boot Admin 2.5.5 发布,这是一个错误修正版本。现在可以从 maven 仓库 下载 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.5.5</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> ...

本以为,经过上周的2.16.0版本升级,Log4j2的漏洞修复工作,大家基本都要告一段落了。 万万没想到,就在周末,Log4j官方又发布了新版本:2.17.0 该版本主要修复安全漏洞:CVE-2021-45105 影响版本:2.0-alpha1 至 2.16.0(1.x用户继续忽略) 该漏洞只有当日志配置使用带有Context Lookups的非默认 Pattern Layout(例如$${ctx:loginId})时,攻击者可以通过构造包含递归查找的恶意输入数据,触发无限循环,导致 StackOverflowError,最终进程崩溃。 这次漏洞受影响的只有log4j-core,仅使用log4j-api的程序不需要担心。所以,大家可以通过升级log4j-core来修复该漏洞的 <dependency> <groupId>org.apache.logg...