Spring

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 使使用数据访问技术、关系和非关系数据...

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方法,包含...

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

通过以前的4篇文章,我们看到Spring采用了大量的关于创建和结构方面的设计模式。本文将描述属于行为方面的两种设计模式:命令和访问者。 前传: Spring框架中的设计模式(一) Spring框架中的设计模式(二) Spring框架中的设计模式(三) Spring框架中的设计模式(四) 命令模式这篇文章描述的第一个行为设计模式是命令。它允许将请求封装在一个对象内并附加一个回调动作(每次遇到所所谓的回调大家就只需要理解为一个函数方法就好,省的去浪费那么多脑子)。请求被封装在命令对象之下,而请求的结果被发送到接收者。命令本身不是由调用者执行。为了直白了解其中的主要思想,想象一下管理服务器的情况(远程通过ssh操作Linux服务器)。管理员(invoker)在命令行(commands)中启动一些操作,将结果发送到服务器(接收器)。在这里,所有这一切都是由客户端的终端(也就是我们用...

本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨论单例模式。 前传: Spring框架中的设计模式(一) Spring框架中的设计模式(二) Spring框架中的设计模式(三) 适配器当我们需要在给定场景下(也就是给定接口)想要不改变自身行为而又想做到一些事情的情况下(就是我给电也就是接口了,你来做事也就是各种电器),使用适配器设计模式(这里再说一点,就相当于我们再一个规章制度的环境下,如何去适应并达到我们期待的效果,放在架构设计这里,可以拿一个php系统和一个Java系统来说,假如两者要互相调用对方的功能,我们可以设计一套对外的api来适配)。这意味着在调用此对象之前,我们将更改使用对象而不改变机制。拿一个现实中的例子进行说明,想象一下你想要用电钻来钻一个洞。要钻一...

在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。本文将从描述两个创意设计模式开始:原型和对象池。最后我们将重点关注行为模式—>观察者。 前传: Spring框架中的设计模式(一) Spring框架中的设计模式(二) 原型模式这篇文章的第一个设计模式是原型。可以通过官方文档查找有关Spring作用域中的bean作用域的文章中介绍了类似的概念(prototype)。原型设计模式与有用相同名称的(prototype)作用域有点相似。此设计模式允许通过复制已存在的对象来创建一个对象的实例。副本应该是真正的副本。这意味着新对象的所有属性应与复制对象的属性相同。如果不清楚,比一个简单的JUnit案例更好的说明: public class PrototypeTest { @Test public vo...

在上一篇中我们在Spring中所谈到的设计模式涉及到了创建模式三剑客和1个行为模式(解释器模式)。这次我们会将眼光更多地关注在具有结构性和行为性的设计模式上。在这篇文章中,我们将看到每个类型的两种模式。首先将关注类型是的结构设计模式。它将包含代理和复合。下一个将介绍行为模式:策略和模板方法。 前传: Spring框架中的设计模式(一) 代理模式面向对象编程(OOP)可能是编程中最流行的概念。然而,Spring引入了另一种编码规范,面向切面编程(AOP)。为了简化定义,AOP是面向系统特定点的一种编程,如:异常抛出,特定类别方法的执行等.AOP允许在执行这些特定点之前或之后执行补充动作。如何实现这种操作?它可以通过监听器(listeners)进行。但在这种情况下,我们应该在只要可能存在调用的地方都需要定义监听器来进行监听(比如在一个方法的开始的地方)。这就是为什么Spring不...

设计模式有助于遵循良好的编程实践。作为最流行的Web框架之一的Spring框架也使用其中的一些。 本文将介绍Spring Framework中使用的设计模式。这是5篇专题文章的第一部分。这次我们将发现Spring框架中使用的4种设计模式:解释器,构建器,工厂方法和抽象工厂。每部分将首先解释给定模式的原理。紧接着,将会使用Spring的一个例子来加深理解。 解释器设计模式在现实世界中,我们人类需要解释手势。他们可以对文化有不同的含义。这是我们的解释,给他们一个意义。在编程中,我们还需要分析一件事情,并决定它是什么意思。我们可以用解释设计模式来做。 此模式基于表达式和评估器部分。第一个代表一个要分析的事情。这个分析是由评价者来做出的,它们知道构成表达的人物的意义。不必要的操作是在一个上下文中进行的。 Spring主要以Spring Expression Language(SpEL)为例。...