The config data loader supports the env: prefix and also accepts
extension hints.
Example: env:VAR1[.properties] reads the environment
variable 'VAR1' in properties format (using the
PropertiesPropertySourceLoader).
The PropertySourceLoaders are loaded via spring.factories.
Also adds a smoke test to test it end to end.
Closes gh-41609
Update `ConversionServiceDeducer` so that lambdas can be used with
`@ConfigurationPropertiesBinding` annotated `@Bean` methods.
This commit also allows more converter types to be detected.
Closes gh-44018
Update `ApplicationConversionService` to support beans that are
implemented using lambdas. The updated code now uses the result of
`beanDefinition.getResolvableType()` if the type itself has unresolvable
generics.
See gh-22885
Before this commit, the generated name for the inner class had the
wrong format <package>.<parent>.<child> (canonical name).
GraalVM expects $ to separate the parent from the inner class.
This commit updates SpringBootJoranConfigurator to generate
an appropriate format for a class name. Specifically, an inner class
should be separated by a dollar sign, not a dot.
See gh-44021
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Remove shouldNotRegisterStructuredLoggingJsonMembersCustomizer...
RuntimeHints since it duplicates shouldNotRegisterStructuredLogging...
JsonMembersCustomizerRuntimeHintsWhenCustomizerIsNotSet
See gh-44013
Signed-off-by: Johnny Lim <izeye@naver.com>
Change `SystemStatusListener` to a `OnConsoleStatusListener` to
ensure that it cannot be added twice from different threads.
Also add a local `retrospectivePrint()` that is used for non-debug
output that will print ERROR and WARN status, but not INFO.
See gh-43931
Fix `SystemStatusListener` so that superfluous output is not
printed when starting an application. This change ensures that
the `SystemStatusListener` is not added twice, and that
retrospective logging only occurs when `debug` is true.
See gh-43931
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, a change in gh-43586 unlocked the support for
symlinks: instead of watching the link itself which might never change,
this would watch the target file which is likely to change.
This could break with an `IllegalStateException` in case the symlink is
using a path relative to the link itself.
This commit ensures that the target is resolved against the current
link path to avoid incorrect watch operations.
Fixes gh-43966
Add two methods to create an SslManagerBundle from a given
TrustManagerFactory or from a single or multiple TrustManagers.
Both those methods use the default KeyManagerFactory.
Closes gh-43064
Properties which should be ignored can be specified in the
additional-spring-configuration-metadata.json file. The ignored
properties section is copied into the final
spring-configuration-metadata.json file, and the ignored properties are
removed from the properties element in the final file.
Closes gh-2421
Update `LogbackLoggingSystem` so that the `OnErrorConsoleStatusListener`
is also registered when loading a custom Logback configuration file.
See gh-43931
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
The property is named 'spring.jooq.config' and is of type Resource,
so that it supports classpath: and all the other common prefixes.
The config is loaded through JAXB. If JAXB is not on the classpath,
an exception is thrown. Also adds a failure analyzer for this exception.
Closes gh-38778
Update `StructuredLoggingJsonProperties` and related class so that
multiple `StructuredLoggingJsonMembersCustomizer` classes can be
used.
Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
See gh-43368
Add RuntimeHints for GraylogExtendedLogFormatProperties,
StructuredLoggingJsonProperties and ElasticCommonSchemaProperties
properties.
Add BeanFactoryInitializationAotProcessor to register RuntimeHints
for a custom StructuredLoggingJsonMembersCustomizer.
See gh-43862
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, the GraphQL auto-configuration that defines the
infrastructure beans for base support would only be active when:
* GraphQL schema files are detected in the configured locations
* or if GraphQlSourceBuilderCustomizer beans are present
This would allow some "code first" approaches, but not situations where
developers contribute their own `GraphQlSource`. This commit ensures
that the auto-configuration is processed even if the application only
contributes a custom `GraphQlSource` bean.
Closes gh-33096
When testing with Gradle 7.6, junit-platform-launcher won't be
on the test runtime classpath unless it's declared as a dependency.
When testing with Gradle 8.x the dependency is added implicitly but
starting with Gradle 8.3 relying on this will result in a warning.
When junit-platform-launcher is absent, a failure occurs when testing
with Gradle as the class loader structure is such that JUnit tries
to load any test execution listeners, finds the listener declared in
spring-boot-actuator-autoconfigure but cannot then load the
implemented TestExecutionListener interface.
This problem is addressed by augmenting the component metadata for
spring-boot-starter-test to add a dependency on
junit-platform-launcher. This addresses the problem with
spring-boot-actuator-autoconfigure while also addressing a warning
with Gradle 8.3+.
Closes gh-43340
Prior to this commit, the GraphQL auto-configuration would provide
configuration properties for specifying the locations and file
extensions of schema files to be scanned during startup.
This commit adds a new "spring.graphql.schema.additional-files" that
applications can use to point at particular files, like
"classpath:mylocation/schema.graphqls". These files will be parsed and
considered for the schema in addition to the scanned ones.
Closes gh-42792
It registers a 'ssl.chains' gauge to count the number of chains with
different statuses (valid, expired, not yet valid, will expire soon).
Additionally, it registers a 'ssl.chain.expiry' gauge for every
certificate in a chain, tracking the seconds until expiry.
This binder reacts on bundle updates and new bundle registrations.
Closes gh-42030
Resolution of base64 encoded data to arbitrary resources has been
introduced in Spring Boot 3.4. This commit adapts the documentation to
restrict this support to SSL only.
This commit also polishes the phrasing a bit.
See gh-43809