Spring获取实现某接口的所有实例bean

时间:2024-01-15 11:30:32

1、获取 applicationContext,通过ApplicationAware自动注入

2、getBeansOfType、getBeanNamesForType

  Map<String, Interface> result = applicationContext().getBeansOfType(Interface.class);

  //key位 beanName,value为bean

  String[] result = applicationContext().getBeanNamesForType(Interface.class);

  //返回 beanName 的String 数组

补充:java通过Class的isAssignableFrom方法

  注释:有两个Class类型的类象,一个是调用isAssignableFrom方法的类对象(后称对象a),以及方法中作为参数的这个类对象(称之为对象b),这两个对象如果满足以下条件则返回true,否则返回false:

a对象所对应类信息是b对象所对应的类信息的父类或者是父接口,简单理解即a是b的父类或接口

a对象所对应类信息与b对象所对应的类信息相同,简单理解即a和b为同一个类或同一个接口