build.gradle:
Код: Выделить всё
plugins {
id 'java'
id "io.freefair.aspectj" version "5.1.1"
}
group = 'org.example'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
sourceSets {
main {
java {
srcDirs = ['src/main/java', 'src/main/aspectj']
}
}
test {
java {
srcDirs = ['src/test/java']
}
}
}
dependencies {
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.23.1'
testImplementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.6'
implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.6'
implementation group: 'org.aspectj', name: 'aspectjrt', version: '1.9.6'
testImplementation group: 'org.aspectj', name: 'aspectjrt', version: '1.9.6'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
testImplementation 'junit:junit:4.13.1'
}
test {
useJUnitPlatform()
}
Код: Выделить всё
package org.example.aspectj;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class DemoAspect {
@Before("execution(* *(..)) && !within(org.example.aspectj.DemoAspect)")
public void logEnter(JoinPoint joinPoint) {
System.out.println("!!!!!!DemoAspect");
System.out.print(joinPoint.getStaticPart());
System.out.print(" -> ");
System.out.println(joinPoint.getSignature());
}
}
Код: Выделить всё
package org.example.aspectj;
import java.util.Date;
public class Main {
public static void main(String[] args) {
System.out.println("new Date() -> " + new Date());
}
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... atch-event
Мобильная версия