java - Spring AOP。从 JoinPoint 获取 bean 名称

标签 java spring aop spring-aop

我有一个应用程序(使用注释的 Spring 4 MVC+Hibernate 4+MySQL+Maven 集成示例),使用基于注释的配置将 Spring 与 Hibernate 集成。如果可能的话,我想从 JoinPoint 获取 bean 名称....

@Aspect
public class TDKAspectLogger {

    private Logger logger = Logger.getLogger(getClass());

    @Before(“execution(void set*(*))”)
    public void logInfo(JoinPoint point) {
          logger.info(“changing bean -> ” );
    } 
}

最佳答案

你可以使用这个:

Stream.of(joinPoint.getTarget().getClass().getAnnotationsByType(Service.class))
      .forEach(q -> logger.info(q.value()));

获取由@Service注释声明的bean。

但是,并非所有 Bean 都是这样创建的。有些是由 @Bean 带注释的方法创建的,有些甚至可以手动添加到上下文中。因此,如果您使用 @Component@Service@Qualifier 等注释您的 bean 类并使用 @ComponentScan 你可能会得到你想要的。您只需要记住,这不是检索上下文中当前可用的所有 bean 的通用方法(它不适用于没有任何注释/元数据的类)。

关于java - Spring AOP。从 JoinPoint 获取 bean 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42520207/

相关文章:

java - Spring data mongodb repository findAll字段排除

javascript - 资源中缺少 JavaScript 文件

java - 使用 aop.xml 在 AspectJ 中编织加载时间

java - Spring AOP - 从 catch block 中调用建议

java - 为什么 ObjectMapper.writeValueAsString() 会用小驼峰大小写的原始属性插入奇怪的属性?

java - 如何将 ByteBuffer 的内容放入 OutputStream?

java - Spring mvc标签表单保存对象

java - 从另一个联接创建的列上的 JoinColumn

java - 基于@Aspectj的AOP : Advice is not getting called

java - 如何使用 Java 双向读取一个非常大的文本文件的 n 行 block