AOP injection never works


Spring AOP injection (I’m not sure if this term is correct, see example below) never works in Kotlin (IntelliJ IDEA 2017.2.3).

Example in Java:

The same in Kotlin:


Did you use kotlin-spring compiler plugin? By default all Kotlin classes are final and for AOP to work they must not be final.


This plugin is used:

Final or open class — it still makes no difference.


You also need to mark your method as open. Kotlin plugin usage described here.


You need use gradle plugin:


We might be talking about absolutely different things. The problem is the injection in COMPILE time (see java screen-shot above), not RUNTIME. And in compile time the injection does not work. ‘open/final’ makes no difference.


spring + kotlin + AOP work nice, just go to and generate a project with AOP support, you can see a piece of build.gradle here…

buildscript {

    ext {
        kotlinVersion = '1.2.30'
        springBootVersion = '2.0.0.RELEASE'
    repositories {
    dependencies {

apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'
apply plugin: 'org.springframework.boot'


dependencies {

plugin kotlin-spring makes all classes open to allow AOP

Then, just declare your aspect as follows

class MyAspect {

Important: annotate your aspect class with @Aspect and @Component annotations

Piece of cake! :slight_smile:


So, why don’t you show a screenshot with working injection?


I faced the same error, when I tried to use AOP with Kotlin, just created two classes.
With Java code compile-time dependencies works fine,
for Kotlin - no luck


I was facing the same problem with my project. I created a sample project and AOP worked with Kotlin . But not with my original project, as exposed by sva605.

So I included @Order(Ordered.HIGHEST_PRECEDENCE + 1) annotation on my aspect implementation and it worked.