Skip to content

Setting/feature/common interfaces#2

Merged
mahdibohloul merged 23 commits intomasterfrom
setting/feature/common-interfaces
Oct 14, 2025
Merged

Setting/feature/common interfaces#2
mahdibohloul merged 23 commits intomasterfrom
setting/feature/common-interfaces

Conversation

@mahdibohloul
Copy link
Owner

No description provided.

mahdibohloul added 22 commits October 14, 2025 15:00
… settings

Introduce `spring-setting-core` module including:
- Reactive `SettingService` and `SettingRepository` implementations.
- `InjectSetting` annotation and `InjectSettingAspect` for AOP-based setting injection.
- Serialization/deserialization utilities (`SettingReader`, `SettingWriter`) with Jackson integration.
- In-memory and composite repositories for settings.
- Spring Boot auto-configuration for core components.
- Gradle build setup, static analysis, and tests to ensure module functionality.
…ing repository

Introduce `CaffeineSettingRepository` implementing `SettingRepository` with a reactive, non-blocking API using Caffeine for in-memory caching. Add `MemorySettingProperties` for configurable cache properties and `MemorySettingAutoConfiguration` for Spring Boot auto-configuration.
Introduce build configuration, dependencies, plugins, and Maven publishing details for the `spring-setting-memory` module. Include Spotless and Detekt for code formatting and static analysis.
…ing repository

Introduce `MongoSettingRepository` implementing `SettingRepository` with reactive MongoDB support. Add `MongoSettingDocument` entity, `MongoSettingAutoConfiguration` for Spring Boot auto-configuration, and Gradle build setup. Include Spotless and Detekt for static analysis and formatting.
…repository

Introduce `RedisSettingRepository` implementing `SettingRepository` with reactive Redis support. Add `RedisSettingProperties` for configurable key prefix and TTL, `RedisSettingAutoConfiguration` for Spring Boot auto-configuration, and Gradle build setup. Include Spotless and Detekt for static analysis and formatting.
…ide dependency management

Introduce consistent dependency version management using `libs.versions.toml`. Add versions for Kotlin, Spring Framework, Reactor, Jackson, and other libraries. Update project structure, Gradle build, and remove `spring-setting-demo` from settings.gradle.kts. Include comprehensive README documentation for setup and usage.
…RedisSettingProperties`

Tidy up by eliminating `ObjectMapper` from `RedisSettingAutoConfiguration` and introducing a constant for the default TTL value in `RedisSettingProperties`.
…ng-core`

Introduce `fluxWithLoadSetting` and `monoWithLoadSetting` extension functions to simplify reactive setting retrieval and usage with `SettingService`.
Introduce `MongoSettingProperties` with `collectionName` and `typeAlias` fields for dynamic configuration. Update `MongoSettingDocument` to utilize these properties through Spring's environment support. Enable properties in `MongoSettingAutoConfiguration`.
Include `spring-configuration-metadata.json` and `additional-spring-configuration-metadata.json` files to provide metadata support for configurable properties across the `spring-setting-redis`, `spring-setting-mongodb`, and `spring-setting-memory` modules.
…g` properties

Introduce `SettingProperties` class to manage `spring.setting` configuration. Add `spring-configuration-metadata.json` and `additional-spring-configuration-metadata.json` for metadata support.
… auto-configuration for `SettingProperties` support
…ency across implementations. Update documentation and MongoDB save logic.
@mahdibohloul mahdibohloul self-assigned this Oct 14, 2025
@mahdibohloul mahdibohloul merged commit b9ad2ef into master Oct 14, 2025
2 checks passed
@mahdibohloul mahdibohloul deleted the setting/feature/common-interfaces branch October 14, 2025 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant