@ -31,6 +31,6 @@ You'll notice these files are already intentionally in .gitignore. The same poli
@@ -31,6 +31,6 @@ You'll notice these files are already intentionally in .gitignore. The same poli
## FAQ
Q. What about IntelliJ IDEA's own [Gradle support](https://confluence.jetbrains.net/display/IDEADEV/Gradle+integration)?
Q. What about IntelliJ IDEA's own [Gradle support](https://www.jetbrains.com/help/idea/gradle.html)?
A. Keep an eye on https://youtrack.jetbrains.com/issue/IDEA-53476
With the ternary operator syntax, you usually have to repeat a variable twice, as the
following example shows:
@ -1763,7 +1763,7 @@ This will inject a system property `pop3.port` if it is defined or 25 if not.
@@ -1763,7 +1763,7 @@ This will inject a system property `pop3.port` if it is defined or 25 if not.
=== Safe Navigation Operator
The safe navigation operator is used to avoid a `NullPointerException` and comes from
the http://www.groovy-lang.org/operators.html#_safe_navigation_operator[Groovy]
the https://www.groovy-lang.org/operators.html#_safe_navigation_operator[Groovy]
language. Typically, when you have a reference to an object, you might need to verify that
it is not null before accessing methods or properties of the object. To avoid this, the
safe navigation operator returns null instead of throwing an exception. The following
@ -131,7 +131,7 @@ Typically, you need an application server's JTA capability only if your applicat
@@ -131,7 +131,7 @@ Typically, you need an application server's JTA capability only if your applicat
to handle transactions across multiple resources, which is not a requirement for many
applications. Many high-end applications use a single, highly scalable database (such as
Oracle RAC) instead. Stand-alone transaction managers (such as
https://www.atomikos.com/[Atomikos Transactions] and http://jotm.objectweb.org/[JOTM])
https://www.atomikos.com/[Atomikos Transactions] and https://jotm.ow2.org/[JOTM])
are other options. Of course, you may need other application server capabilities, such as
Java Message Service (JMS) and Jakarta EE Connector Architecture (JCA).
@ -2880,7 +2880,7 @@ treats them as errors.
@@ -2880,7 +2880,7 @@ treats them as errors.
For more information about the Spring Framework's transaction support, see:
transactions in Spring, with and without XA] is a JavaWorld presentation in which
Spring's David Syer guides you through seven patterns for distributed
transactions in Spring applications, three of them with XA and four without.
@ -6229,7 +6229,7 @@ it with values from the Java `ARRAY`, as the following example shows:
@@ -6229,7 +6229,7 @@ it with values from the Java `ARRAY`, as the following example shows:
=== Embedded Database Support
The `org.springframework.jdbc.datasource.embedded` package provides support for embedded
Java database engines. Support for http://www.hsqldb.org[HSQL],
Java database engines. Support for https://www.hsqldb.org[HSQL],
https://www.h2database.com[H2], and https://db.apache.org/derby[Derby] is provided
natively. You can also use an extensible API to plug in new embedded database types and
@ -92,7 +92,7 @@ parties such as https://github.com/h-thurow/Simple-JNDI[Simple-JNDI].
@@ -92,7 +92,7 @@ parties such as https://github.com/h-thurow/Simple-JNDI[Simple-JNDI].
The `org.springframework.mock.web` package contains a comprehensive set of Servlet API
mock objects that are useful for testing web contexts, controllers, and filters. These
mock objects are targeted at usage with Spring's Web MVC framework and are generally more
convenient to use than dynamic mock objects (such as http://easymock.org/[EasyMock])
convenient to use than dynamic mock objects (such as https://easymock.org/[EasyMock])
or alternative Servlet API mock objects (such as http://www.mockobjects.com[MockObjects]).
TIP: Since Spring Framework 5.0, the mock objects in `org.springframework.mock.web` are
@ -7728,13 +7728,13 @@ WebTestClient]. Browse these examples for further ideas.
@@ -7728,13 +7728,13 @@ WebTestClient]. Browse these examples for further ideas.
==== HtmlUnit Integration
Spring provides integration between <<spring-mvc-test-server, MockMvc>> and
http://htmlunit.sourceforge.net/[HtmlUnit]. This simplifies performing end-to-end testing
https://htmlunit.sourceforge.io/[HtmlUnit]. This simplifies performing end-to-end testing
when using HTML-based views. This integration lets you:
* Easily test HTML pages by using tools such as
http://htmlunit.sourceforge.net/[HtmlUnit],
https://htmlunit.sourceforge.io/[HtmlUnit],
https://www.seleniumhq.org[WebDriver], and
http://www.gebish.org/manual/current/#spock-junit-testng[Geb] without the need to
https://www.gebish.org/manual/current/#spock-junit-testng[Geb] without the need to
deploy to a Servlet container.
* Test JavaScript within pages.
* Optionally, test using mock services to speed up testing.
@ -8061,11 +8061,11 @@ First, we no longer have to explicitly verify our form and then create a request
@@ -8061,11 +8061,11 @@ First, we no longer have to explicitly verify our form and then create a request
looks like the form. Instead, we request the form, fill it out, and submit it, thereby
significantly reducing the overhead.
Another important factor is that http://htmlunit.sourceforge.net/javascript.html[HtmlUnit
Another important factor is that https://htmlunit.sourceforge.io/javascript.html[HtmlUnit
uses the Mozilla Rhino engine] to evaluate JavaScript. This means that we can also test
the behavior of JavaScript within our pages.
See the http://htmlunit.sourceforge.net/gettingStarted.html[HtmlUnit documentation] for
See the https://htmlunit.sourceforge.io/gettingStarted.html[HtmlUnit documentation] for
@ -8672,7 +8672,7 @@ TIP: For additional information on creating a `MockMvc` instance, see
@@ -8672,7 +8672,7 @@ TIP: For additional information on creating a `MockMvc` instance, see
===== MockMvc and Geb
In the previous section, we saw how to use MockMvc with WebDriver. In this section, we
use http://www.gebish.org/[Geb] to make our tests even Groovy-er.
use https://www.gebish.org/[Geb] to make our tests even Groovy-er.
[[spring-mvc-test-server-htmlunit-geb-why]]
====== Why Geb and MockMvc?
@ -8775,7 +8775,7 @@ if we were at the wrong page.
@@ -8775,7 +8775,7 @@ if we were at the wrong page.
Next, we create a `content` closure that specifies all the areas of interest within the
@ -34,7 +34,7 @@ The other part of the answer is functional programming. Much as the addition of
@@ -34,7 +34,7 @@ The other part of the answer is functional programming. Much as the addition of
in Java 5 created opportunities (such as annotated REST controllers or unit tests), the
addition of lambda expressions in Java 8 created opportunities for functional APIs in Java.
This is a boon for non-blocking applications and continuation-style APIs (as popularized
by `CompletableFuture` and http://reactivex.io/[ReactiveX]) that allow declarative
by `CompletableFuture` and https://reactivex.io/[ReactiveX]) that allow declarative
composition of asynchronous logic. At the programming-model level, Java 8 enabled Spring
WebFlux to offer functional web endpoints alongside annotated controllers.
@ -87,7 +87,7 @@ Spring WebFlux. It provides the
@@ -87,7 +87,7 @@ Spring WebFlux. It provides the
https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html[`Mono`] and
https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html[`Flux`] API types
to work on data sequences of 0..1 (`Mono`) and 0..N (`Flux`) through a rich set of operators aligned with the
ReactiveX http://reactivex.io/documentation/operators.html[vocabulary of operators].
ReactiveX https://reactivex.io/documentation/operators.html[vocabulary of operators].
Reactor is a Reactive Streams library and, therefore, all of its operators support non-blocking back pressure.
Reactor has a strong focus on server-side Java. It is developed in close collaboration
@ -479,7 +479,7 @@ In similar fashion, you can specify HTML escaping per field, as the following ex
@@ -479,7 +479,7 @@ In similar fashion, you can specify HTML escaping per field, as the following ex
[[mvc-view-groovymarkup]]
== Groovy Markup
The http://groovy-lang.org/templating.html#_the_markuptemplateengine[Groovy Markup Template Engine]
The https://groovy-lang.org/templating.html#_the_markuptemplateengine[Groovy Markup Template Engine]
is primarily aimed at generating XML-like markup (XML, XHTML, HTML5, and others), but you can
use it to generate any text-based content. The Spring Framework has a built-in
integration for using Spring MVC with Groovy Markup.
@ -597,7 +597,7 @@ a key reason for having SockJS. This section covers important
@@ -597,7 +597,7 @@ a key reason for having SockJS. This section covers important
considerations about running in those browsers.
The SockJS client supports Ajax/XHR streaming in IE 8 and 9 by using Microsoft's