Java 春季AOP。从连接点获取bean名称

Java 春季AOP。从连接点获取bean名称,java,spring,aop,spring-aop,Java,Spring,Aop,Spring Aop,我有一个应用程序(Spring4MVC+Hibernate4+MySQL+Maven集成示例使用注释),使用基于注释的配置将Spring与Hibernate集成。如果可能的话,我想从JoinPoint获取bean名 @Aspect public class TDKAspectLogger { private Logger logger = Logger.getLogger(getClass()); @Before(“execution(void set*(*))”)

我有一个应用程序(Spring4MVC+Hibernate4+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的通用方法(它不适用于没有任何注释/元数据的类)。

我不是Spring用户,因此我对Spring bean了解不多。但是如果能得到类名会让人满意的话,我可以帮你。