What’s New in Arconia 0.29.0
Arconia 0.29.0 provides a number of new features and enhancements. This page includes the highlights of the release, but you can also check out the full release notes for more details about each new feature and bug fix.
We provide an automated way to upgrade your project to the latest version of Arconia, which is described in the Upgrading Arconia documentation.
|
This release requires Spring Boot 4.1. Upgrade your application to Spring Boot 4.1 before upgrading Arconia. You can apply the automated Spring Boot 4.1 OpenRewrite recipes to do so. If your application is still on Spring Boot 4.0, remain on Arconia |
Core Features
Profiles
-
The profiles that Arconia activates automatically in dev and test mode can now be customized (or disabled) via the new
META-INF/arconia-bootstrap.propertiesfile, checked in with your application. For example, you can use it to activate alocalprofile instead of the defaultdevone when running the application in dev mode (arconia.dev.profiles=local). The mode-specific profiles are now activated before Spring Boot loads the application configuration, so profile-specific configuration files are processed as part of the standard Spring Boot configuration flow, including when importing configuration from external sources like Spring Cloud Config Server or HashiCorp Vault. As a consequence, thearconia.dev.profiles,arconia.test.profiles, andarconia.bootstrap.profiles.enabledproperties are no longer supported inapplication.properties/application.yml. You can define them in the new bootstrap configuration file, as JVM system properties, as environment variables, or as command line arguments. Learn more in the Profiles documentation.
Dev Services
Sharing and Reusing Dev Services
-
Dev Services can now be shared across multiple applications running simultaneously during development, allowing them to use the same containerized service instead of starting one container each. When sharing is enabled, the application connects to a running shared Dev Service started by another application if available, or else starts its own that other applications can discover in turn. Sharing is supported by the Artemis, Docling, Grafana LGTM, Kafka, Ollama, OpenLit, OpenTelemetry Collector, Phoenix, Pulsar, and RabbitMQ Dev Services, is enabled by default, and can be controlled via the
arconia.dev.services.<service-name>.sharedproperty. Thedevservicesactuator endpoint now shows whether each Dev Service runs in a container started by the application (OWNED) or discovered from another application (DISCOVERED). Learn more about Sharing Dev Services. -
Support for keeping Dev Services running across application restarts and executions has been consolidated on the Reusable Containers feature of Testcontainers, available for all Dev Services via the new
arconia.dev.services.<service-name>.reuseproperty (disabled by default). This replaces the previous behavior of thesharedproperty, which now controls the sharing feature described above (and is only available on the Dev Services that support it): if you relied onsharedto keep containers running across restarts, set thereuseproperty instead. Learn more about Reusing Dev Services Across Restarts.
Shared Networks
-
Dev Service containers can now join a shared network to communicate with each other directly, for scenarios where one containerized service needs to reach another (for example, a Docling Dev Service sending telemetry to a Grafana LGTM Dev Service). Enable it with the global
arconia.dev.services.network.enabledproperty (disabled by default); when enabled, all Dev Service containers join the network and are reachable by their service name. Containers started by different applications running simultaneously can be connected too, by setting a stable network name via thearconia.dev.services.network.nameproperty. Your application’s own connections to Dev Services, over the local host and mapped ports, are unaffected. Learn more about Shared Networks.
Troubleshooting
-
Dev Services now log a consistent startup message for each service, listing its resolved links such as management consoles and telemetry endpoints (also available through the
devservicesactuator endpoint), replacing the ad-hoc lines previously emitted by the underlying container classes. And when a container fails to start, its logs are written to the application log to make an otherwise opaque failure diagnosable, at the level set by the newarconia.dev.services.startup.log-levelproperty (defaultinfo;offto disable). Learn more about Startup Feedback. -
Configuration errors are now detected at startup instead of being silently ignored. Mutually exclusive Dev Services (for example, two JDBC databases) are reported with an actionable error message before any container is started. Invalid values for the
enabledproperties result in a bind error, and out-of-range fixed ports are rejected instead of silently falling back to a random port.
Customization
-
Dev Service containers can now be customized programmatically by declaring
DevServiceContainerCustomizerbeans, applied to matching containers before they are started. This unlocks advanced scenarios not covered by configuration properties, such as defining a custom wait strategy or fine-tuning any other aspect of the underlying Testcontainers object. Learn more in the Dev Services documentation. -
You can now build your own Dev Service for any service that can run as an OCI container, using the same infrastructure the built-in Dev Services are based on. The
@ConditionalOnDevServicesEnabledannotation accepts a custom configuration property namespace (e.g.@ConditionalOnDevServicesEnabled(name = "fancydb", prefix = "acme.dev.services")), so custom Dev Services get the same activation semantics as the built-in ones: activation in dev and test mode only, the globalarconia.dev.services.enabledkill switch, and a service-specific toggle under your own namespace. Learn more in the Building Your Own Dev Service documentation.
RabbitMQ
-
The RabbitMQ Dev Service now uses dedicated default credentials (username
arconia, passwordarconia) instead of the RabbitMQ defaultguestuser, consistently with the other credential-protected Dev Services. The credentials can be customized via the newarconia.dev.services.rabbitmq.usernameandarconia.dev.services.rabbitmq.passwordproperties, are automatically wired into your application, and are required when logging into the RabbitMQ Management Console.