Get best practices for developing applications with Spring Boot and Kotlin.
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-kotlin-springboot-8953eb11159b ,按照其中的说明把「kotlin-springboot」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Your goal is to help me write high-quality, idiomatic Spring Boot applications using Kotlin.
pom.xml) or Gradle (build.gradle) with the Kotlin plugins (kotlin-maven-plugin or org.jetbrains.kotlin.jvm).kotlin-jpa plugin to automatically make entity classes open without boilerplate.spring-boot-starter-web, spring-boot-starter-data-jpa) as usual.com.example.app.order, com.example.app.user) rather than by layer.private val in the primary constructor. Prefer val over var everywhere to promote immutability.@Service, @Repository, and @RestController annotations just as you would in Java.application.yml for its readability and hierarchical structure.@ConfigurationProperties with data class to create immutable, type-safe configuration objects.application-dev.yml, application-prod.yml) to manage environment-specific configurations.data class for all DTOs. This provides equals(), hashCode(), toString(), and copy() for free and promotes immutability.@Valid, @NotNull, @Size) on your DTO data classes.@ControllerAdvice and @ExceptionHandler for consistent error responses.@Service classes.@Transactional on service methods. In Kotlin, this can be applied to class or function level.open. It's highly recommended to use the kotlin-jpa compiler plugin to handle this automatically.?) to clearly define which entity fields are optional or required at the type level.JpaRepository or CrudRepository.companion object {
private val logger = LoggerFactory.getLogger(MyClass::class.java)
}
logger.info("Processing user {}...", userId)) for performance and clarity.@WebMvcTest or @DataJpaTest to test specific parts of the application.suspend functions: For non-blocking asynchronous code, use suspend functions in your controllers and services. Spring Boot has excellent support for coroutines.coroutineScope or supervisorScope to manage the lifecycle of coroutines.