为了账号安全,请及时绑定邮箱和手机立即绑定

Spring AOP 切面没有执行

Spring AOP 切面没有执行

拉莫斯之舞 2019-03-14 22:15:38
我想试试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已经被扫描到了,但是切面却没有执行,不知道是为什么
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

你的Driver类需要声明为一个Spring Bean。而且Driver类是你自己new的,所以Spring没法知道它是什么时候被实例化的。


查看完整回答
反对 回复 2019-04-24
  • 1 回答
  • 0 关注
  • 1461 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号