gpt4 book ai didi

java - AOP 仅适用于 @Autowired 注解

转载 作者:行者123 更新时间:2023-12-02 01:16:57 25 4
gpt4 key购买 nike

我有以下 Spring Controller 代码:

@Controller
@RequestMapping("/")
public class MainController {
UserService user = new UserService();

@GetMapping("/home")
public String goFirstPage(){
user.showUserName(new User("Mike"));
return"firstpage";
}

}

以及以下方面:

@Aspect
@Component
@Order(1)
public class UserAspect {


@Before("execution(public void com.project.aopmaven.services.UserService.showUserName(..))")
public void logUser(){
System.out.println("Logging User");
}

}

它不起作用,不显示“记录用户”消息(即使 UserService 对象在 Controller 类中实例化)。但是,当我们将 @Autowired 注释添加到 Controller 中定义的 UserService 时,它​​就可以工作了!

@Autowired
UserService user = new UserService();

谁能解释一下吗?

最佳答案

Spring AOP 允许在 Spring bean 上使用 AOP,而不是在随机对象上。它基于代理:Spring 不是注入(inject) bean 的实际实现,而是注入(inject)一个包装实际实现的代理,并在调用包装的 bean 实现之前/之后调用方面。

Documentation

关于java - AOP 仅适用于 @Autowired 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417297/

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