gpt4 book ai didi

java - Spring 4 AOP方面从未被调用?

转载 作者:行者123 更新时间:2023-12-02 04:48:24 25 4
gpt4 key购买 nike

我正在使用 Spring 4 AOP,我创建的方面从未被调用,我无法弄清楚为什么会这样。看,我有这个客户端类:

package com.example.aspects;

public class Client {


public void talk(){

}
}

还有我的方面: 包 com.example.aspects;

import org.aspectj.lang.JoinPoint;
@Aspect
public class AspectTest {

@Before("execution(* com.example.aspects.Client.talk(..))")
public void doBefore(JoinPoint joinPoint) {
System.out.println("***AspectJ*** DoBefore() is running!! intercepted : " + joinPoint.getSignature().getName());
}

}

我的配置文件:

package com.example.aspects;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Configuration
@EnableAspectJAutoProxy
public class Config {

@Bean
public Client client(){
return new Client();
}

}

最后,应用程序

public class App {
public static void main(String[] args) {
AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(
Config.class);
Client client = (Client) appContext.getBean("client");
client.talk();
}
}

通过这种方式,我永远不会被 AspectTest doBefore() 方法“拦截”。你知道发生了什么事吗?问候

最佳答案

您从未注册过您的@Aspect。添加相应的bean

@Bean
public AspectTest aspect() {
return new AspectTest();
}

您还可以将类型设为@Component,并在@Configuration 类中添加适当的@ComponentScan

关于java - Spring 4 AOP方面从未被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com