#Spring

睡不着闲逛,在GitHub上看到一个不错的开源项目:Spring Startup Analyzer。 从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具。Spring Startup Analyzer通过采集Spring应用启动过程的数据,进而生成一个交互式的分析报告,帮助用户发现Spring应用启动慢的位置。同时,Spring Startup Analyzer还提供了Spring Bean异步初始化的工具,来帮助开发者加快Spring应用的启动时间。 下面一起来看看其提供的强大功能。 分析能力我们可以先从该项目中给出HTML样例报告(点击这里查看)来看看它所提供的分析功能。 把报告内容的细节部分都收起来,可以看到如下图所示的内容: 主要有六个部分: 启动的统计数据。其中包括:启动时间、Bean的数量、使用/总共的JAR包数量、未使用/总共的JAR包数量、C...

昨天,在发布了《Spring官宣承认网传大漏洞,并提供解决方案》之后。群里(点击加群)就有几个小伙伴问了这样的问题:我们的Spring版本比较老,这个怎么办?这是一个好问题,所以DD今天单独拿出来说说。 这次的RCE漏洞宣布之后,官方给出的主要解决方案是升级版本,但只有Spring 5.2、5.3和Spring Boot 2.5、2.6提供了对应的升级版本。 那么对于一些还在用Spring 5.0、5.1甚至Spring 4.x、或者Spring Boot 1.x和Spring 2.4及以下版本的用户该怎么办呢? 第一种方法官方给出过一种通过扩展RequestMappingHandlerAdapter来实现的方法。同时也给出了一个Spring Boot下使用Spring MVC的实现方案,如果是WebFlux的话略做修改即可。但如果不是Spring Boot的话,则Bean的初始化方...

Spring沦陷了!这样的标题这几天是不是看腻了?然而,仔细看看都是拿着之前的几个毫不相干的CVE来大吹特吹。所以,昨天发了一篇关于最近网传的Spring大漏洞的文章,聊了聊这些让人迷惑的营销文、以及提醒大家不要去下载一些利用漏洞提供补丁的钓鱼内容。而对于这个网传的漏洞,依然保持关注状态,因为确实可能存在,只是没有官宣。 就在不久前(3月31日晚),Spring社区发布了一篇名为《Spring Framework RCE, Early Announcement》的文章,官宣了最近网传的Spring漏洞。这也证实了网传漏洞确实存在,并且并非最近很多文章说提到的3月28、29日公布的CVE,如果你是照着那些文章解决问题的话,请根据这次官宣内容重新来过吧。 这次确定的Spring核心框架中的RCE漏洞,CVE号为CVE-2022-22965[1]。 这个漏洞是在周二深夜,由AntGrou...

昨天凌晨发了篇关于Spring大漏洞的推文,白天就有不少小伙伴问文章怎么删了。 主要是因为收到朋友提醒说可能发这个会违规(原因可参考:阿里云因发现Log4j2核弹级漏洞但未及时上报,被工信部处罚),所以就删除了。 经过一天的时间,似乎这个事情变得有点看不懂了。所以下面聊聊这个网传的Spring大漏洞吧。 这个漏洞话题的起点源自3月29日晚,DD在群里(点击加群)看到网友分享了几位安全大佬爆料Java生态出现了超级大漏洞。 但两位大佬都没有透露这次漏洞更详细的信息。只有网友问了一句:“有log4j那么大吗?”。云舒大佬的回复是:“更大”。 之后,又有安全大佬sunwear(就之前那个因为上海银行工作人员服务态度差,而直接怒取500万现金的大佬,具体什么故事如果你不知道可以百度一下,这里DD就不细说了)给了一些更细节的信息: 所以漏洞影响范围,可以缩小到使用Java 9+和Sp...

大家好,我是DD! 今天跟大家聊聊这个问题:ApplicationStartedEvent与ContextStartedEvent有区别吗? 对了,最近花了几周时间,把SpringForAll社区 3.0上线了,社区的建设目标与之前一样,希望能够构建一个垂直于Java开发者的高质量技术社区!目前,已经有接近1000名注册用户,每天也有不少读者会发布一些帖子,技术氛围已经初步形成。如果你正在学习Java、Spring,你可以在这里分享你的见解,碰到的问题以及帮助别人解决问题。后面,我会持续精选一些,我觉得有意思的问题,在这里继续给大家分享一下! 关于这个问题,其实就是Spring和Spring Boot事件机制的理解。 虽然Spring Boot的基础是Spring,但Spring Boot并没有直接使用Spring中定义的常用事件,而是重新定义了一批。 它们都是继承自Sprin...

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...

一、发布说明北京时间10月15日,Spring Framework推出 5.3.11 和 5.2.18 两个新版本。Spring Framework5.3.11包括32 个修复和改进。Spring Framework5.2.18包括10个选定的修复和改进。 随着越来越多的人使用Spring Boot 逐渐忽略了Spring Framework的关注,其实两者的关系密不可分,对Spring Boot 如果想要能研究得更深入,那么,就需要对Spring Framework有更足够的了解和应用。 二、介绍Spring FrameworkSpring 使创建 Java 企业应用程序变得容易。它提供了在企业环境中使用 Java 语言所需的一切,支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,并且可以根据应用程序的需要灵活地创建多种架构。从 Spring Framework 5...

谁是 Spring 一哥?今年排名前三的项目依旧保持不变。大约 75% 的受访者都在使用 Spring Data、Spring Security 和 Spring WebMVC。然而,这些并不是唯一被大量使用的 Spring 模块。大约三分之一的受访者在使用 Spring Kafka、Spring Batch、Spring Cloud、Spring WebFlux 和 Spring Integration,而 25% 的受访者使用 Spring Session、Spring LDAP、Spring AMQP 和 Spring Cloud Gateway。(稍后会详细介绍 Spring Cloud Gateway) Data, data 无处不在应用程序的好坏取决于它们的数据。复杂的应用程序可能会使用多个数据源甚至跨多个云。Spring Data 使使用数据访问技术、关系和非关系数据...

一年一度的SpringOne大会在9月1日至2日因为疫情原因在线上举行。Pivotal公司(Spring项目拥有者)每年都会举办一次这样的大会,与全球数千位开发人员、客户和合作伙伴相聚在一起,交流技术实践经验,探讨技术的发展趋势。同时每次大会也会披露Spring项目下一步的大动作。今年的大会的亮点无疑是Spring Framework 6.0。跟随胖哥来看看在未来一段时间内Spring的大动作。 Spring Framework 5.3.x先来看看Spring Framework 5.3.x的一些规划。 不用翻译的了吧,强调一下Spring Boot 2.6和2.7都会基于该版本。 Spring Framework 6.0备受瞩目的就是Spring Framework 6.0了。它将基于 Java 17 和 Jakarta EE 9 。它现在的情况是这样的: Spring 6.0...

8月17日,Spring官方宣布 Spring Authorization Server 已正式脱离实验状态,并进入Spring-Project家族! 此举恰逢本周的 0.2.0 版本发布,这是第一个正式支持的生产就绪版本。 自2020 年 4 月Spring Authorization Server公布以来以来,已经实现了OAuth 2.1 授权协议的绝大部分,并为 OpenID Connect 1.0 提供适度支持。随着该项目进入下一个开发阶段,其重点将转向推进对 OpenID Connect 1.0 的支持。 Spring 官方表示 ❝感谢在这么短的时间内为该项目做出贡献并帮助其发展的所有人。我们对当前构建的项目基石充满信心,并对Spring Authorization Server进入下一个生命周期非常兴奋。我们期待共同继续这项工作,并最终使 Spring Authoriz...

10月27日,Spring Framework团队宣布了5.3版本正式GA,Spring用户可以在repo.spring.io和Maven Central上获取到最新版本的依赖包。 JDK的版本支持 最新的Spring Framework 5.3需要JDK 8或更高版本的Java 环境下使用,同时该版本特别支持了JDK 15。作为5.x时代的最后一个特性分支,5.3的后续版本会继续扩展支持后续JDK版本,包括JDK 17 LTS。 Spring Boot的版本支持 目前的Spring Boot 2.4和明年的Spring Boot 2.5都将基于这个版本来制作。 更新内容 spring-r2dbc 模块增加了核心 R2DBC 支持,以作为 Spring Data R2DBC 基础,同时引入 JdbcTemplate 的查询结果流 优化了Spring MVC中PathPattern的...

Spring MVC执行流程已是JAVA面试中老生常谈的问题,相信各位小伙伴也是信手拈来。今天我们来谈谈另一个面试中必会必知的问题: @RestController和@Controller的区别? Spring MVC中的REST实现 @Controller + @ResponseBody注解 @RestController注解 Spring MVC 与 REST基于注解的MVC框架简化了创建RESTful web服务的过程。传统的Spring MVC控制器和RESTful web服务控制器之间的关键区别是HTTP响应体的创建方式。传统的MVC控制器依赖于视图技术,基于REST的web服务控制器仅返回对象,而对象数据直接以JSON/XML的形式写入HTTP响应。 Spring MVC对 REST 的支持支持以下方式来创建 REST 资源: 控制器可以处理所有的HTTP方法,包含...

虽然目前越来越多的国产优秀技术产品走出了国门,但是对于众领域的开发者来说,依然对于国外的各种基础资源依赖还是非常的强。所以,一些网络基本技能一直都是我们需要掌握的,但是速度与稳定性问题一直也都有困扰着大家。 所以,今天就给众 Java 开发者推荐两个提速神器:Maven的国内镜像和Spring的国内脚手架! Maven的国内镜像官网地址:http://maven.aliyun.com/ 对于每一个Java开发来说,拉不到依赖的情况一定都有碰到过。所以,强烈建议大家在安装开发环境的时候,就把阿里的国内镜像配置上,省去日后各种不必要的麻烦。 配置方法很简单,只需要找到Maven的setting.xml文件,然后在镜像配置中加入阿里云的仓库配置,具体如下: <mirrors> <mirror> <id>aliyunmaven</...

Spring Framework 5.2.5 发布了,此版本包含 50 多个修复和改进,还增加了对最近发布的 Java 14 的支持。 新特性 不在 MimeTypeUtils LRU 缓存中缓存多部分 mime 类型 在 JmsBootstrapConfiguration 中声明 proxyBeanMethods=false 使用 Java 14 记录会引发 java.lang.UnsupportedOperationException:此特性需要 ASM8_EXPERIMENTAL 非公共 Kotlin Bean 无法实例化 在 TomcatHttpHandlerAdapter 中避免 CoyoteInputStream 的 ClassCastException SynthesizedMergedAnnotationInvocationHandler.isVisible() 中...

IoC 控制反转(Inversion of Control)是OOP中的一种设计原则,也是Spring框架的核心.大多数应用程序的业务逻辑代码都需要两个或多个类进行合作完成的,通过IoC则可以减少它们之间的耦合度. 实现方法 IoC的主要实现方法有两种,依赖注入与依赖查找. 依赖注入 : 应用程序被动的接收对象,IoC容器通过类型或名称等信息来判断将不同的对象注入到不同的属性中. 依赖注入主要有以下的方式: 基于set方法 : 实现特定属性的public set()方法,来让IoC容器调用注入所依赖类型的对象. 基于接口 : 实现特定接口以供IoC容器注入所依赖类型的对象. 基于构造函数 : 实现特定参数的构造函数,在创建对象时来让IoC容器注入所依赖类型的对象. 基于注解 : 通过Java的注解机制来让IoC容器注入所依赖类型的对象,例如Spring框架中的@Autowi...