SpringContextHolder.getBean AOP能执行
时间: 2024-02-20 15:02:31 浏览: 156
spring教程(ppt版)
在使用 Spring AOP 时,可以使用 `SpringContextHolder.getBean` 来获取 Spring 容器中的 bean,并且 AOP 也能够正常执行。`SpringContextHolder` 是一个 Spring 容器的工具类,它提供了一种方便的方式来获取当前线程中的 Spring 容器,并从容器中获取 bean。
在 AOP 中,Spring 会为匹配的切面生成代理对象,并在代理对象的方法中织入增强逻辑。当你调用代理对象的方法时,实际上会调用增强后的方法。因此,如果你从容器中获取到一个代理对象,并调用它的方法,增强逻辑也会被执行。
例如,假设你在 Spring 容器中定义了一个名为 `userDao` 的 bean,并为它配置了一个切面来记录方法的执行时间。你可以使用下面的代码来获取 `userDao` bean,并调用它的方法:
```java
UserDao userDao = SpringContextHolder.getBean("userDao");
userDao.save(user);
```
在执行 `userDao.save(user)` 方法时,切面的增强逻辑也会被执行,从而记录下方法的执行时间。
需要注意的是,`SpringContextHolder` 应该只在特定的情况下使用,例如在非 Spring 管理的类中获取 Spring bean。在大多数情况下,应该使用依赖注入来获取 Spring bean。
阅读全文