I am trying to create an aspect class that with a method of type after or before, finds a target class annotation and prints a text when it is instantiated but it does not work.
Annotation
package com.example.demo
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class AutoGenerateCode()
Aspect
package com.example.demo
import org.aspectj.lang.JoinPoint
import org.aspectj.lang.annotation.Aspect
import org.aspectj.lang.annotation.Before
import org.springframework.stereotype.Component
@Aspect
@Component
class AutoGenerateCodeAspect {
@Before("@annotation(AutoGenerateCode)")
fun before(joinPoint: JoinPoint) {
println("\n\nBEFORE\n\n")
}
}
Dto class
package com.example.demo
@AutoGenerateCode
class FakeDto {
val id = ""
}
Main
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.EnableAspectJAutoProxy
@SpringBootApplication(scanBasePackages = ["com.example"])
@EnableAspectJAutoProxy
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
val fakeDto = FakeDto()
println(fakeDto)
}
This prints the object of the FakeDto class, but not the message "BEFORE"
Versions:
- JAVA: 11
- SpringBoot: 2.4.1
- Kotlin: 1.4.21
Help, please