Skip to main content
Version: v2026.0.0

Configuration system

ARender is built on Spring Boot. All services follow the Spring Boot externalized configuration model. This page describes how configuration sources are resolved and how to override properties at each layer.

Precedence hierarchy

Spring Boot applies configuration sources in a defined order. Higher sources override lower ones.

Lowest to highest priority:

PrioritySourceLocation
1Internal application.ymlInside the ARender JAR
2Internal application.propertiesInside the ARender JAR
3External application.ymlNext to the JAR or mounted volume
4External application.propertiesNext to the JAR or mounted volume
5Environment variablesOS env, Docker environment:, Kubernetes ConfigMap
6JVM system properties-D flags passed to java
7Command-line arguments--property=value passed after the JAR

A property defined at level 7 always wins over the same property defined at level 1.

.properties vs .yml precedence

When both formats exist at the same location, .properties takes precedence over .yml.

Example: both files define the same property:

application.yml
arender:
server:
rendition:
hosts: http://broker-a:8761/
application.properties
arender.server.rendition.hosts=http://broker-b:8761/

Effective value: http://broker-b:8761/ — the .properties file wins because it has higher precedence than .yml at the same location.

This rule applies at every level of the configuration hierarchy.

External configuration locations

Spring Boot standalone

Place override files next to the ARender JAR:

arondor-arender-hmi-springboot-2026.0.0.jar
application.properties # or .yml

Spring Boot detects and loads these files at startup without any additional flags.

Docker

Mount override files into the container at /home/arender/:

docker-compose.yml
services:
ui:
image: artifactory.arondor.cloud:5001/arender-ui-springboot
volumes:
- ./application.properties:/home/arender/application.properties

The container working directory is /home/arender/, so Spring Boot picks up the file automatically.

Kubernetes (Helm)

Use the config.file.extraConfig field in values.yaml to inject raw YAML into the generated application.yml ConfigMap:

values.yaml
broker:
config:
file:
extraConfig: |
arender:
server:
annotations:
can:
create: false

For simple key-value overrides, use environment variables instead. See Environment variables.

The configurations/ folder

The Spring Boot standalone package extracts a configurations/ directory alongside the JAR:

arondor-arender-hmi-spring-boot-package-2026.0.0/
arondor-arender-hmi-spring-boot-2026.0.0.jar
configurations/
arender-custom-client.properties # viewer UI behavior overrides
arender-custom-server.properties # server-side overrides (broker URL, OAuth2, etc.)
arender-custom-integration.xml # Spring XML bean overrides (client side)
arender-custom-server-integration.xml # Spring XML bean overrides (server side)
lib/ # connector JARs
public/ # static web resources
FilePurpose
arender-custom-server.propertiesPrimary file for server-side property overrides such as arender.server.rendition.hosts, OAuth2 settings, and feature flags.
arender-custom-client.propertiesControls viewer UI behavior: toolbar layout, default zoom, annotation permissions.
arender-custom-integration.xmlReplaces or extends Spring beans on the client side using XML configuration.
arender-custom-server-integration.xmlReplaces or extends Spring beans on the server side.

These files are loaded via Spring's @PropertySource and XML import mechanisms.

Resolution diagram

            ┌─────────────────────────────────┐
│ 7. Command-line arguments │ ← highest priority
├─────────────────────────────────┤
│ 6. JVM -D system properties │
├─────────────────────────────────┤
│ 5. Environment variables │
├─────────────────────────────────┤
│ 3-4. External config files │
├─────────────────────────────────┤
│ 1-2. ARender JAR base config │ ← lowest priority
└─────────────────────────────────┘

Practical guidelines

  • Do not edit files inside the ARender JAR. Use external files or environment variables.
  • Use environment variables for deployment-specific values (hostnames, ports, credentials). They sit above file-based configuration in the hierarchy.
  • Use JVM -D flags sparingly, typically for debugging or one-off test runs.

Integrator profile

ARender ships a dedicated Spring profile for integrators, which provides additional configuration entry points. This profile is not included in 2026.0.0 — it is planned for 2026.1.0.