1. Customize an annotation
@Target(value = { ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface CacheNullify { boolean value = true; }
2. Implement enhanced logic
@Slf4j @Aspect @Component public class CacheNullifyHandler { @AfterReturning("@annotation(com.xxx.CacheNullify)") public void afterReturning() { log.info("走你"); CacheServiceUtil.delUserInfoCache(); } }
@annotation
: What follows is the annotation you want to enhance (the annotated method), you can directly write the annotation name, But in order to prevent duplicate names, write the full path as much as possible
##@AfterReturning: Triggered after the method is executed and returns successfully
@After: Triggered after the method is completed (including execution completion, or exception thrown)
3. Use
Add the @CacheNullify annotation to the method that needs to be enhancedUse of aspects and custom annotationsFirst understand the basic concepts and usage of aspects and custom annotations Introduction to AOPAOP is the abbreviation of Aspect Oriented Programming, which means: Aspect-oriented programming, a technology that achieves unified maintenance of program functions through pre-compilation and dynamic agents during runtime. AOP is the continuation of OOP, a hot spot in software development, an important content in the Spring framework, and a derivative paradigm of functional programming. AOP can be used to isolate various parts of the business logic, thereby reducing the coupling between the various parts of the business logic, improving the reusability of the program, and improving the efficiency of development. AOP definitionAspect (aspect)
Joint point
Pointcut (pointcut)
Advice (enhancement/notification)
Introduction
Target (target object)
Weaving
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface MyAnnotation { String value() default""; }
Meta-annotation
Target type Description
Note: For example, @Target(ElementType.METHOD), the annotation of the flag is used on the method, but if we use this annotation flag on the class, an error will be reported
@Retention: Indicates the life cycle of the annotation
Life cycle type Description
RetentionPolicy.SOURCE
Discarded during compilation, not included In the class file
RetentionPolicy.CLASS
is discarded when the JVM is loaded and included in the class file. The default value is
RetentionPolicy.RUNTIME
Loaded by the JVM, included in the class file, and can be obtained at runtime
@Inherited: It is a mark annotation, @Inherited elaborates An annotated type is inherited. If an annotation type modified with @Inherited is used for a class, this annotation will be used for subclasses of the class.
@Documented: Indicates that the element marked by this annotation can be documented by Javadoc or similar tools
The above is the detailed content of What is the method for java custom aspect enhancement?. For more information, please follow other related articles on the PHP Chinese website!