Browse Source

Polishing

pull/35344/merge
Sam Brannen 4 days ago
parent
commit
ed451c107f
  1. 2
      framework-docs/modules/ROOT/pages/data-access/jdbc/simple.adoc
  2. 19
      framework-docs/modules/ROOT/pages/integration/aot-cache.adoc
  3. 5
      framework-docs/modules/ROOT/pages/integration/appendix.adoc

2
framework-docs/modules/ROOT/pages/data-access/jdbc/simple.adoc

@ -15,7 +15,7 @@ configuration options. You should instantiate the `SimpleJdbcInsert` in the data
layer's initialization method. For this example, the initializing method is the layer's initialization method. For this example, the initializing method is the
`setDataSource` method. You do not need to subclass the `SimpleJdbcInsert` class. Instead, `setDataSource` method. You do not need to subclass the `SimpleJdbcInsert` class. Instead,
you can create a new instance and set the table name by using the `withTableName` method. you can create a new instance and set the table name by using the `withTableName` method.
Configuration methods for this class follow the `fluid` style that returns the instance Configuration methods for this class follow the `fluent` style that returns the instance
of the `SimpleJdbcInsert`, which lets you chain all configuration methods. The following of the `SimpleJdbcInsert`, which lets you chain all configuration methods. The following
example uses only one configuration method (we show examples of multiple methods later): example uses only one configuration method (we show examples of multiple methods later):

19
framework-docs/modules/ROOT/pages/integration/aot-cache.adoc

@ -3,21 +3,22 @@
:page-aliases: integration/class-data-sharing.adoc :page-aliases: integration/class-data-sharing.adoc
:page-aliases: integration/cds.adoc :page-aliases: integration/cds.adoc
The ahead-of-time cache is a JVM feature introduced in Java 24 via the The ahead-of-time cache is a JVM feature introduced in Java 24 via
https://openjdk.org/jeps/483[JEP 483] that can help reduce the startup time and memory https://openjdk.org/jeps/483[JEP 483] that can help reduce the startup time and memory
footprint of Java applications. AOT cache is a natural evolution of https://docs.oracle.com/en/java/javase/17/vm/class-data-sharing.html[Class Data Sharing (CDS)]. footprint of Java applications. AOT cache is a natural evolution of
https://docs.oracle.com/en/java/javase/17/vm/class-data-sharing.html[Class Data Sharing (CDS)].
Spring Framework supports both CDS and AOT cache, and it is recommended that you use the Spring Framework supports both CDS and AOT cache, and it is recommended that you use the
latter if available in the JVM version you are using (Java 24+). latter if available in the JVM version you are using (Java 24+).
To use this feature, an AOT cache should be created for the particular classpath of the To use this feature, an AOT cache should be created for the particular classpath of the
application. It is possible to create this cache on the deployed instance, or during a application. It is possible to create this cache on the deployed instance, or during a
training run performed for example when packaging the application thanks to an hook-point training run performed for example when packaging the application thanks to a hook-point
provided by the Spring Framework to ease such use case. Once the cache is available, users provided by the Spring Framework to ease such use case. Once the cache is available, users
should opt in to use it via a JVM flag. should opt in to use it via a JVM flag.
NOTE: If you are using Spring Boot, it is highly recommended to leverage its NOTE: If you are using Spring Boot, it is highly recommended to leverage its
{spring-boot-docs-ref}/packaging/efficient.html#packaging.efficient.unpacking[executable JAR unpacking support] {spring-boot-docs-ref}/packaging/efficient.html#packaging.efficient.unpacking[executable JAR unpacking support]
which is designed to fulfill the class loading requirements of both AOT cache and CDS. which is designed to fulfill the class loading requirements of both the AOT cache and CDS.
== Creating the cache == Creating the cache
@ -29,7 +30,7 @@ invoked; but the lifecycle has not started, and the `ContextRefreshedEvent` has
been published. been published.
To create the cache during the training run, it is possible to specify the `-Dspring.context.exit=onRefresh` To create the cache during the training run, it is possible to specify the `-Dspring.context.exit=onRefresh`
JVM flag to start then exit your Spring application once the JVM flag to start and then exit your Spring application once the
`ApplicationContext` has refreshed: `ApplicationContext` has refreshed:
@ -82,7 +83,7 @@ java -XX:SharedArchiveFile=app.jsa ...
Pay attention to the logs and the startup time to check if the AOT cache is used successfully. Pay attention to the logs and the startup time to check if the AOT cache is used successfully.
To figure out how effective the cache is, you can enable class loading logs by adding To figure out how effective the cache is, you can enable class loading logs by adding
an extra attribute: `-Xlog:class+load:file=aot-cache.log`. This creates a `aot-cache.log` with an extra attribute: `-Xlog:class+load:file=aot-cache.log`. This creates an `aot-cache.log` with
every attempt to load a class and its source. Classes that are loaded from the cache should have every attempt to load a class and its source. Classes that are loaded from the cache should have
a "shared objects file" source, as shown in the following example: a "shared objects file" source, as shown in the following example:
@ -95,11 +96,11 @@ a "shared objects file" source, as shown in the following example:
[0.151s][info][class,load] org.springframework.context.MessageSource source: shared objects file [0.151s][info][class,load] org.springframework.context.MessageSource source: shared objects file
---- ----
If the AOT cache can't be enabled or if you have a large number of classes that are not loaded from If the AOT cache cannot be enabled or if you have a large number of classes that are not loaded from
the cache, make sure that the following conditions are fulfilled when creating and using the cache: the cache, make sure that the following conditions are fulfilled when creating and using the cache:
- The very same JVM must be used. - The very same JVM must be used.
- The classpath must be specified as a JAR or a list of JARs, and avoid the usage of directories and `*` wildcard characters. - The classpath must be specified as a JAR or a list of JARs, and avoid the usage of directories and `*` wildcard characters.
- The timestamps of the JARs must be preserved. - The timestamps of the JARs must be preserved.
- When using the cache, the classpath must be the same than the one used to create it, in the same order. - When using the cache, the classpath must be the same as the one used to create it, in the same order.
Additional JARs or directories can be specified *at the end* (but won't be cached). Additional JARs or directories can be specified *at the end* (but will not be cached).

5
framework-docs/modules/ROOT/pages/integration/appendix.adoc

@ -1,16 +1,11 @@
[[appendix]] [[appendix]]
= Appendix = Appendix
[[appendix.xsd-schemas]] [[appendix.xsd-schemas]]
== XML Schemas == XML Schemas
This part of the appendix lists XML schemas related to integration technologies. This part of the appendix lists XML schemas related to integration technologies.
[[appendix.xsd-schemas-jee]] [[appendix.xsd-schemas-jee]]
=== The `jee` Schema === The `jee` Schema

Loading…
Cancel
Save