I am creating a custom annotation NullCheck for method parameter to check value is null or not hello(@NullCheck String text), but I am not able to invoke Aspect around the Annotation.
Main Class
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAutoConfiguration @EnableAspectJAutoProxy public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } Controller class, just invoking an aspect for POC, not returning anything
package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/") class HelloController { @GetMapping public void hello() { hello("hi"); } private void hello(@NullCheck String text) { System.out.println(text); } } Annotation
package com.example.demo; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.RetentionPolicy.RUNTIME; @Documented @Retention(RUNTIME) @Target(ElementType.PARAMETER) public @interface NullCheck { } 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 public class NullCheckAspect { this is working
@Before("@annotation(org.springframework.web.bind.annotation.GetMapping)") but this is not
@Before("@annotation(com.example.demo.NullCheck)") public void beforeAdvice(JoinPoint joinPoint) { System.out.println("Before method:" + joinPoint.getSignature()); } } build.gradle
buildscript { ext { springBootVersion = '2.1.2.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'idea' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' idea { module { // if you hate browsing Javadoc downloadJavadoc = true // and love reading sources :) downloadSources = true } } bootJar { launchScript() } repositories { mavenCentral() jcenter() } bootJar { launchScript() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'org.springframework.boot:spring-boot-starter-web' runtimeOnly 'org.springframework.boot:spring-boot-devtools' } what am I missing?