Spring bean方法:如何获取方法名称?

吉米·马格里宾(Jimmy Maghrebien)

假设我有一个用@Bean春季注释的java方法。

范例:

public void coco() {
    String strCurrMethodName = new Object(){}.getClass().getEnclosingMethod().getName();        
    System.out.println("Méthode : \"" + strCurrMethodName +"\"") ;
}

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    
    return args -> {coco();
                    String strCurrMethodName = new Object(){}.getClass().getEnclosingMethod().getName();
                    System.out.println("Méthode : \"" + strCurrMethodName +"\"") ;
                    };
}

这是控制台输出:

方法:“可可”

方法:“ lambda $ 0”

如您所见,我们可以为非bean方法获取方法名称。但是对于bean方法,我们不是获取方法名称,而是获取由spring管理的通用值(我们得到的是“ lambda $ 0”而不是“ commandLineRunner”。

有没有人知道Spring bean方法名称的解决方案?

提前致谢

安德烈亚斯

将获得方法名称的语句移到lambda表达式之外:

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    String strCurrMethodName = new Object(){}.getClass().getEnclosingMethod().getName();
    return args -> {coco();
                    System.out.println("Méthode : \"" + strCurrMethodName +"\"") ;
                    };
}

之所以不能从lambda表达式内部完成,是因为该commandLineRunner方法在代码运行时已经很久了,因为编译器将lambda块转换为隐藏的(合成)方法,并用对的引用替换了lambdas表达式。该方法。

@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    return MyClass::lambda$0;
}

private synthetic void lambda$0(String... args) {
    coco();
    String strCurrMethodName = new Object(){}.getClass().getEnclosingMethod().getName();
    System.out.println("Méthode : \"" + strCurrMethodName +"\"") ;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

枚举的Spring数据方法名称

来自分类Dev

“IN”的 Spring 数据方法名称(多个值)

来自分类Dev

用于获取具有最大列值的行的 Spring 数据方法名称

来自分类Dev

如何在Spring JPA中从方法名称中关闭查询创建?

来自分类Dev

如何在Spring JPA中从方法名称中关闭查询创建?

来自分类Dev

Spring Data-存储库方法名称中的OR条件

来自分类Dev

Spring Data方法名称以检索多个列

来自分类Dev

如何获取模型的方法名称数组?

来自分类Dev

smalltalk反射-如何获取方法名称?

来自分类Dev

登录-获取方法名称

来自分类Dev

Spring AOP切入点,方法名称以get开头

来自分类Dev

Spring Roo-告诉dbmanaged实体从外键方法名称中删除“ Id”后缀

来自分类Dev

通过方法名称创建Spring查询-通过静态数字排序吗?

来自分类Dev

Spring Data JPA没有在方法名称中指定低级关键字

来自分类Dev

如何访问Spring Bean名称?

来自分类Dev

如何获得方法名称?

来自分类Dev

如何获取在传递参数的lambda中使用的方法名称

来自分类Dev

codeigniter从父方法获取方法名称

来自分类Dev

从Spring bean名称获取类对象

来自分类Dev

junit,获取失败的方法名称

来自分类Dev

获取Web服务的方法名称

来自分类Dev

获取当前方法名称

来自分类Dev

获取引发异常的方法名称

来自分类Dev

Spring MVC:如何在处理程序方法中获取jsp文件的名称

来自分类Dev

创建Spring Bean的最佳方法

来自分类Dev

如何从已知方法获取方法名?

来自分类Dev

如何使用for循环更改方法名称

来自分类Dev

如何获得模型的方法名称数组?

来自分类Dev

如何插入 ruby 方法名称