我正在使用下面的代码来获取应用程序中的所有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 及其注释作为输出。
理想情况下,我想从上述代码中获取以下所有信息。
答案 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,而不是手动解释注释。