我想试试aop怎么用,但是写好之后没有调用切面,而IDEA却找到了我的切面和切入点。。配置类:@Configuration@EnableAspectJAutoProxy@ComponentScanpublic class CarConfig { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CarConfig.class); System.out.println("-------------Spring context loaded-------------"); Ferrari ferrari = context.getBean(Ferrari.class); Driver driver = new Driver(new License("s3j3")); int time = driver.drive(ferrari, 1000); System.out.println("spent " + time + " hours"); System.out.println("-------------Spring context is going to close-----------"); context.close(); }}Driver:public class Driver { private License license; public Driver(License license) { this.license = license; } public int drive(Car car, int distance) { if (license == null) return -1; if (distance <= 0) return 0; if (car == null || car.getSpeed() <= 0) return -1; return distance / car.getSpeed() + 1; }}Aspect:@Aspect@Componentpublic class Monitor { @Pointcut(value = "execution(int cn.gaoyuexiang.spring.demo.test.aop.driver.Driver" + ".drive(cn.gaoyuexiang.spring.demo.test.aop.car.Car, int)) " + "&& args(car, distance)") public void drive(Car car, int distance) {} @Before("drive(car, distance)") public void aboard(Car car, int distance) { String carName = car.getClass().getName(); System.out.println("the driver will drive a " + carName + " to run " + distance + " kilometers"); }}目录结构:.├── aop│ └── Monitor.java├── car│ ├── Car.java│ └── Ferrari.java├── CarConfig.java└── driver ├── Driver.java └── license └── License.java从Spring的输出发现Monitor已经被扫描到了,但是切面却没有执行,不知道是为什么
添加回答
举报
0/150
提交
取消