kotlin-spring-proxy-compatibility

Diagnose Spring AOP proxy failures in Kotlin applications via bean boundaries and compiler plugins.

4|Updated Jun 10, 2026
One-click install
npx skills add https://github.com/mymx2/foreman --skill kotlin-spring-proxy-compatibility-mymx2
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: kotlin-spring-proxy-compatibility
Source: https://github.com/mymx2/foreman/tree/main/.qoder/skills.collected/skills/kotlin-spring-proxy-compatibility
Command: npx skills add https://github.com/mymx2/foreman --skill kotlin-spring-proxy-compatibility-mymx2

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill resolves runtime issues where Spring annotations like @Transactional, @Cacheable, or @Async fail to trigger due to Kotlin's final-by-default semantics or incorrect proxy boundaries.

Core Features & Use Cases

  • Proxy Boundary Analysis: Identifies if method calls are bypassing Spring proxies due to self-invocation or incorrect bean access.
  • Configuration Validation: Checks for missing Kotlin compiler plugins (all-open, jpa) that are required for Spring to intercept classes.
  • Use Case: Use this when you have a service method annotated with @Transactional that is not actually starting a database transaction during execution.

Quick Start

Use the kotlin-spring-proxy-compatibility skill to diagnose why the @Transactional annotation on my UserService class is being ignored at runtime.

Frequently Asked Questions about kotlin-spring-proxy-compatibility

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why is my @Transactional annotation being ignored in a Kotlin Spring Boot application?

Your @Transactional annotation is likely ignored because Kotlin classes are final by default, preventing Spring from creating proxies. You need the all-open compiler plugin to allow Spring AOP interception and enable transactional behavior at runtime.

How do I fix Spring AOP proxy failures for @Cacheable and @Async in Kotlin?

To fix Spring AOP proxy failures for annotations like @Cacheable and @Async, you must verify method visibility and ensure Kotlin compiler plugins are configured correctly so Spring can properly intercept and proxy your bean boundaries.

Does self-invocation bypass Spring proxies in Kotlin Spring Boot services?

Yes, self-invocation bypasses Spring proxies because internal method calls do not route through the proxy instance. Analyzing bean boundaries and ensuring correct bean access is required to maintain transactional and caching behavior during execution.

What's the best way to debug Spring AOP proxy boundaries and interception issues?

The best way to debug Spring AOP proxy boundaries is to analyze bean access patterns, verify class openness through compiler plugins, and check method visibility to ensure correct runtime interception for transactional, caching, and security behavior.

Do I need the Kotlin all-open compiler plugin for Spring Boot transactional behavior?

Yes, you need the Kotlin all-open compiler plugin for Spring Boot transactional behavior because it opens classes for subclassing. Without it, Spring cannot apply AOP proxies to final classes, causing transaction interception to fail.