Dan T
02/22/2024, 2:54 PMJilles van Gurp
02/23/2024, 10:30 AMHow would you know though? And how long would it take for someone new to find the correct answer?And how will you find out when you get it wrong. Debugging annotation related issues is hard because you have no compile time checks. Your code will compile yet not work and throw some obscure exception at runtime. @Transactional is probably the most abused annotation in Spring. It roughly translates as "transaction pixie dust that makes my tests pass so I just sprinkle it liberally". My code bases is free of hibernate and I bypass Spring completely for database stuff. I have no need for ORMs. A few suggestions: • use koin instead of guice. Dependency injection without annotations. And it's multiplatform so you can use it with kotlin native as well. We actually use it in the browser too with kotlin-js • use the refreshVersions plugin for gradle. You can combine it with using versionCatalogs but it's awesome for staying on top of your dependencies and making informed choices about available updates. I use it on all my kotlin projects. • focus on multiplatform projects: ktor and kotlin-native are a thing. Wasm is coming. You don't need a jvm anymore. There's no need to lock yourself into one platform.
Dan T
02/23/2024, 4:18 PMJilles van Gurp
02/23/2024, 4:21 PMJilles van Gurp
02/23/2024, 4:22 PMrocketraman
02/23/2024, 6:51 PMBootable
(https://github.com/rocketraman/bootable). Its not quite "vanilla", but it's annotation free and it handles only a few concerns:
• DI (via Kodein currently),
• lifecycle management of application services (startup, orderly shutdown), handling things like kill signals properly
• configuring logging
• configuration (currently via cfg4k, but planning a migration to hoplite)
• some optional modules that allow things like ktor to plug in to the lifecycle maangement
I've never regretted using Bootable
over Spring Boot.