获取Spring Bean的类详细信息

时间:2020-02-03 11:59:47

标签: java spring

我正在使用下面的代码来获取应用程序中的所有bean。

Map<String, MyBuilder> allBuilders = context.getBeansOfType(MyBuilder.class);

获取每个bean之后,如何获得该特定bean可用的类?

例如,考虑以下代码:

@MyAnnotation(name = "one")
public class MyService{

    @Dummy(description = "test")
    public MyBuilder builder1() {
        return someValue;
    }
}

使用getBeansOfType()方法可以得到类型为“ getBeansOfType”的“ builder1 ” bean。但是,如何获得该bean可用的实际超类?

对于所提供的示例,我想要类 MyService 及其注释作为输出。

理想情况下,我想从上述代码中获取以下所有信息。

  1. MyService类中的MyAnnotation参数(名称=“一个”)
  2. 虚拟参数(description =“ test”)
  3. MyBuilder bean对象

1 个答案:

答案 0 :(得分:0)

您不能假设您的myservice bean实际上将是MyService的类。如果您希望100%确定方法执行此操作,则将类存储在变量中:

@MyAnnotation(name = "one")
public class MyService{

    Class<MyService> clss = MyService.class;

    @Dummy(description = "test")
    public MyBuilder builder1() {
        return someValue;
    }
}

然后您就可以访问该类,并且可以像往常一样使用反射来读取注释。

这不是最好的解决方案,我认为通常您将依赖于扩展Springs注释或使用AspectJ,而不是手动解释注释。