https://github.com/dzikoysk/javalin-configuration-file
Static configuration file for your Javalin application
https://github.com/dzikoysk/javalin-configuration-file
javalin javalin-plugin
Last synced: 8 months ago
JSON representation
Static configuration file for your Javalin application
- Host: GitHub
- URL: https://github.com/dzikoysk/javalin-configuration-file
- Owner: dzikoysk
- License: apache-2.0
- Created: 2023-09-30T20:54:27.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-10T13:58:15.000Z (almost 2 years ago)
- Last Synced: 2025-02-01T18:22:13.723Z (8 months ago)
- Topics: javalin, javalin-plugin
- Language: Kotlin
- Homepage: https://javalin.io
- Size: 77.1 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Javalin Config File Plugin 
Define static configuration file for your Javalin app in a YAML file.
You don't have to use 3rd party libraries to handle configuration files anymore.### Usage
Add the dependency to your project:
```kotlin
implementation("io.javalin.community:javalin-configuration-file:6.0.0-SNAPSHOT")
```Register the plugin:
```kotlin
val runningApplication = Javalin.createAndStart {
it.registerPlugin(ConfigFile)
}
```Order of precedence:
1. `application.yml` in working directory
2. `application.yml` in resources### Default properties
All properties are optional, so you can define only the ones you need.
```yaml
server:
port: 8080
hostname: localhost
banner: false
http:
default-content-type: application/panda
prefer-405-over-404: true
max-request-size: 100000
async-timeout: 30000
compression:
strategy: GZIP
level: 5
jetty:
min-threads: 10
max-threads: 200
router:
content-path: /panda
ignore-trailing-slashes: true
treat-multiple-slashes-as-single-slash: true
case-insensitive-routes: true
static-files:
enable-webjars: true
directories:
- directory: /public
location: CLASSPATH
```### Custom properties
You can define custom properties for you application or other plugins by simply adding them to the YAML file.
```yaml
my-plugin:
property: value
```Then, create a data class to hold the values:
```kotlin
// Root scope for a config file
data class ConfigFile(
// Your configs
val myPlugin: MyPluginConfig
)data class MyPluginConfig(val property: String)
```Finally, you can load defined values via `ConfigFile` plugin API:
```kotlin
val application = Javalin.createAndStart {
val configPlugin = it.registerPlugin(ConfigFile)
val myPluginConfig = configPlugin.loadConfiguration()
}
```Done!